Flash As3如何在有限的运动中增加加速度?

Flash As3如何在有限的运动中增加加速度?,flash,actionscript-3,bitmapdata,bounds,maze,Flash,Actionscript 3,Bitmapdata,Bounds,Maze,对于迷宫游戏,我试图给我的角色的运动增加加速度。 因为角色不应该穿墙,所以移动功能和命中测试功能是相同的 我尝试在这个函数中的if语句中添加加速度,但这不能正常工作。 谁能告诉我加速度代码放在哪里,为什么放在那里 我以为是这样做的,但不起作用: function walkingX(anEvent: Event): void { var newx: Number = mc.x - (isLeft ? xspeed : 0) + (isRight ? xspeed :

对于迷宫游戏,我试图给我的角色的运动增加加速度。 因为角色不应该穿墙,所以移动功能和命中测试功能是相同的

我尝试在这个函数中的if语句中添加加速度,但这不能正常工作。 谁能告诉我加速度代码放在哪里,为什么放在那里

我以为是这样做的,但不起作用:

    function walkingX(anEvent: Event): void
    {


      var newx: Number = mc.x - (isLeft ? xspeed : 0) + (isRight ? xspeed : 0);
      var newy: Number = mc.y - (isUp ? yspeed : 0) + (isDown ? yspeed : 0);

      if(!boundsBmpData.hitTest(new Point(bounds.x, bounds.y),
                                255,
                                mcBmpData,
                                new Point(newx, newy),
                                255))
      {
         mc.x = newx;
         mc.y = newy;
      }

if(isDown==true && yspeed<maxspeed){yspeed+=2}
if(isUp==true && yspeed>-maxspeed){yspeed-=2}
if(yspeed>0){yspeed-=accel}
if(yspeed<0){yspeed+=accel}

if(isRight==true && xspeed<maxspeed){xspeed+=2}
if(isLeft==true && xspeed>-maxspeed){xspeed-=2}
if(xspeed>0){xspeed-=accel}
if(xspeed<0){xspeed+=accel}

    }
函数walkingX(事件:事件):无效
{
var newx:Number=mc.x-(isLeft?xspeed:0)+(isRight?xspeed:0);
变量newy:Number=mc.y-(isUp?yspeed:0)+(isDown?yspeed:0);
如果(!boundsBmpData.hitTest)(新点(bounds.x,bounds.y),
255,
mcBmpData,
新点(newx,newy),
255))
{
mc.x=newx;
mc.y=newy;
}
如果(isDown==true&&yspeed maxspeed){yspeed-=2}
如果(yspeed>0){yspeed-=accel}
如果(yspeed0){xspeed-=accel}

如果(xspeed我认为您需要删除这些行:

if(yspeed>0){yspeed-=accel}
if(yspeed<0){yspeed+=accel}
...
...
...
if(xspeed>0){xspeed-=accel}
if(xspeed<0){xspeed+=accel}
if(yspeed>0){yspeed-=accel}
如果(yspeed0){xspeed-=accel}

if(xspeedThank你的精彩解释。所以我甚至不需要var accel:Number=0.5;?你能告诉我为什么这不起作用吗:if(isDown==true&&yspeedYou可以使用var accel:Number=1.5(或1.1或1.05)。这个bug是从你的加速值中发出的,这意味着你正在乘以0.5。如果你考虑一下,这个值会降低你的速度(10的一半是什么?5。5的一半是什么?2.5)与乘以1.5(10的一半是什么?15)相比,嗯,不,不要用一个数字乘以x速度/y速度。给它加一个数字,而不是乘!!!它不应该指数增加。算术与线性级数…这是他想要的。
if(isDown==true && yspeed<maxspeed){yspeed *= 1.05}
public static const MOVEMENT_SPEED:int = 1.05;
...
...
...
if(isDown==true && yspeed<maxspeed){yspeed *= MOVEMENT_SPEED}