-1

我正在尝试根据用户的触摸位置将对象移动到新的 x,y 位置,但我碰到了一堵砖墙。

目前,我正在手动编码轴的移动,但它正在生成一个脚本化的“x then y”,从而产生一个平方的移动。理想情况下,我想获得到触摸位置的线性路径,而不是正方形。

我的基本运动计算在这里:

    //check target not met on x axis
        if(spriteX != spriteTargetX){
            //check if its left or right
            if(spriteTargetX<spriteX){
                spriteX -=spriteSpeed;

            }else{

                spriteX +=spriteSpeed;
            }                               
        }
        if(spriteY != spriteTargetY){
            //check if its up or down
            if(spriteTargetY<spriteY){
                spriteY -=spriteSpeed;
            }else{
                spriteY +=spriteSpeed;
            }                                           
        }

上述算法总是导致方形运动。老实说,我不知道我是否应该进行某种距离/角度计算。有任何想法吗?

4

1 回答 1

0

一种简单的方法是将运动方向表示为单位向量,然后乘以速度。我将列出基本步骤,并举例说明您所处的位置(1,1)并希望快速(4,5)移动2


  • 获取目的地和当前之间的差异。(diff.x 和 diff.y)
diff.x = 3
diff.y = 4
  • 获取从目的地到当前的总距离。
dist = 5 ( sqrt(3^2 + 4^2) = 5 )
  • 将 diff.x 和 diff.y 除以距离
diff.x = 0.6  
diff.y = 0.8
  • 将 diff.x 和 diff.y 乘以所需的速度
diff.x = 1.2 
diff.y = 1.6
  • 将 diff.x 和 diff.y 分别添加到 sprite 的 x 和 y
sprite.x = 2.2
sprite.y = 2.6
于 2013-03-12T21:21:02.647 回答