我正在尝试根据用户的触摸位置将对象移动到新的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;
}
}
上述算法总是导致方形运动。老实说,我不知道是否应该进行某种距离/角度计算。有什么想法吗?
答案 0 :(得分:0)
一种简单的方法是将移动方向表示为单位向量,然后乘以速度。我将列出基本步骤,并举例说明您在(1,1)
并希望以(4,5)
的速度转移到2
:
diff.x = 3 diff.y = 4
dist = 5 ( sqrt(3^2 + 4^2) = 5 )
diff.x = 0.6 diff.y = 0.8
diff.x = 1.2 diff.y = 1.6
sprite.x = 2.2 sprite.y = 2.6