【问题标题】:Drag sprite in cocos2d for the iPhone - with a max velocity在 cocos2d 中为 iPhone 拖动精灵 - 以最大速度
【发布时间】:2011-10-28 02:30:27
【问题描述】:

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

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

谢谢:)

【问题讨论】:

    标签: iphone objective-c cocos2d-iphone ccsprite


    【解决方案1】:

    您需要维护一个 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 中,您可能想要检查对象是否彼此接近,而不是完全相同的数字以允许舍入错误。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多