我的精灵有一些生涩的动作。
基本上,当用户触摸屏幕上的一个点时,精灵应该移动到那个点。这工作得很好......它甚至考虑了一个增量 - 因为帧速率可能不一致。
但是,我注意到 y 运动通常在 x 运动之前完成(即使行进距离相同),所以看起来精灵正在以“L”形而不是平滑的对角线移动。
垂直和水平速度(vx,vy)都设置为 300。任何想法有什么问题吗?我怎样才能让我的精灵沿着平滑的对角线移动?
- (void)update:(ccTime)dt
{
int x = self.position.x;
int y = self.position.y;
//if ball is to the left of target point
if (x<targetx)
{
//if movement of the ball won't take it to it's target position
if (x+(vx *dt) < targetx)
{
x += vx * dt;
}
else {
x = targetx;
}
} else if (x>targetx) //same with x being too far to the right
{
if (x-(vx *dt) > targetx)
{
x -= vx * dt;
}
else {
x = targetx;
}
}
if (y<targety)
{
if (y+(vy*dt)<targety)
{
y += vy * dt;
}
else {
y = targety;
}
} else if (y>targety)
{
if (y-(vy*dt)>targety)
{
y -= vy * dt;
}
else {
y = targety;
}
}
self.position = ccp(x,y);
}