0

我正在尝试制作一个游戏,用户应该在屏幕上上下拖动精灵,避免遇到障碍物。这里的最后一个答案帮助我在屏幕上拖动精灵,但我想设置精灵可以移动的最大速度(并希望具有自然的加速/减速),所以它不太容易避开物体。

有谁知道我可以如何修改代码来实现这一点,或者还有其他方法吗?

谢谢 :)

4

2 回答 2

2

您需要维护一个CGPoint destinationPosition变量,它是您手指的位置,并使用更新循环来修改它的位置:

-(void) update:(ccTime) dt
{
    CGPoint currentPosition = draggableObject.position.x;
    if (destination.x != currentPosition.x)
    {
        currentPosition.x += (destination.x - currentPosition.x) / 5.0f; // This 5.0f is how fast you want the object to move to it's destination
    }
    if (destination.y != currentPosition.y)
    {
        currentPosition.y += (destination.y - currentPosition.y) / 5.0f;
    }
    draggableObject.postion = currentPosition;
}

ifs 中,您可能想要检查对象是否彼此接近,而不是完全相同的数字以允许舍入错误。

于 2011-10-27T17:52:24.957 回答
0

您只需要在您使用的任何计划更新程序中都有一个 if 语句,例如时间、触摸或其他任何内容。

我假设你有 x/y 速度?就在您的更新声明中,无论您的加速度在哪里 -

if(acceleration.x > 20){
acceleration.x = 20;
}

if(acceleration.y > 20){
acceleration.y = 20;
}
于 2011-10-27T18:30:27.660 回答