移动对象以触摸x y



我正试图根据用户的触摸位置将对象移动到一个新的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,1),并希望以2:的速度移动到(4,5)


  • 获取目的地和当前目的地之间的差异。(diff.xanddiff.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

相关内容

  • 没有找到相关文章

最新更新