移动物体触摸x y

时间:2013-03-11 23:42:15

标签: android opengl-es path-finding opengl-es-1.1

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

目前,我正在手动编码轴的运动,但它产生了一个脚本化的“x然后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;
            }                                           
        }

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

1 个答案:

答案 0 :(得分: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分别添加到精灵的x和y
sprite.x = 2.2
sprite.y = 2.6