2

我刚开始使用 SpriteKit 并遇到了一个问题:

我想要一个对象,我称之为 playerController,它跟随玩家的触摸和冰球,它可以被控制器击中,并且在这种情况下会反弹控制器。

不知何故,就像一个 AirHockey 游戏。

我构建了 2 个具有纹理和物理特性的 SKNode,因此如果重力开启或控制器以某种速度移动,它们会正确地相互反弹。

但是,如果控制器通过以下动作移动,冰球不会反弹。

SKAction *moveTo = [SKAction moveTo: CGPointMake(touch.position.x ,touch.position.y) duration: 0.1];
[self.controllerPlayerOne runAction: moveTo];

为什么?我已经在文档和几个教程中进行了搜索,但没有一个解决我的问题。也许这是 SpriteKit 开发人员想要的,但是在这种情况下如何实现跟随触摸呢?

希望有人可以提供帮助。

编辑:

目前,我通过将控制器位置设置为触摸位置并在每次触摸移动时使用触摸的最后和当前位置计算速度来获得控制器圆盘行为。

这工作得很好。

4

1 回答 1

6

这是设计使然。顺便说一句,在 cocos2d 中可以观察到相同的行为。

问题是:移动动作移动精灵,而不是物理体。即使物理体确实跟随精灵,移动动作也会推翻物理体运动,最多将它放在精灵所在的位置。

相反,当使用物理实体时,您必须通过改变实体的速度来移动它们,您不能再可靠地使用移动动作。然后物理体移动精灵。

于 2013-10-29T15:04:19.913 回答