0

我正在开发一个游戏,该游戏涉及在屏幕上移动的对象(鱼),您需要用另一个可以上下移动的对象(钩子)来捕捉这些对象(鱼)。一旦物体接触到鱼的位置,就应该与鱼钩的位置相同。所以在开始接触(确实有效,我确定)我说,当鱼钩和鱼接触时,鱼的位置变得与鱼钩相同。

func didBeginContact(contact: SKPhysicsContact) {

        let firstBody = contact.bodyA
        let secondBody = contact.bodyB




     if firstBody.categoryBitMask == physicsCategory.fishHook && secondBody.categoryBitMask == physicsCategory.greenFish || firstBody.categoryBitMask == physicsCategory.greenFish && secondBody.categoryBitMask == physicsCategory.fishHook{

                CollisionWithfishHook(firstBody.node as! SKSprit

    eNode, greenFish: secondBody.node as! SKSpriteNode)

        }
    }

    func CollisionWithfishHook (fishHook: SKSpriteNode, greenFish: SKSpriteNode){

        greenFish.position = CGPointMake(fishHook.position.x, fishHook.position.y)

    }

出于某种原因,当我运行它并且他们联系时没有任何反应。我知道确实开始接触工作正常,因为当我告诉它在碰到鱼钩时将鱼移开时,它就可以工作。问题是我无法更改绿鱼的位置。为什么会这样,我能做些什么来解决它?

4

1 回答 1

0

didBeginContact方法中改变鱼的位置只会改变鱼的位置——鱼和钩接触的那一刻。您需要在方法中继续更新鱼的位置update

我会在你的GameScene类中创建一个名为的类变量fishToUpdate,当你“挂钩”一个时,fishToUpdate = greenFish (or whatever was caught)在你的didBeginContact方法中设置。然后在该update方法中,将鱼的位置更新为fishToUpdate.position = fishHook.position

于 2016-07-11T18:25:40.647 回答