我刚刚开始使用SpriteKit并遇到了一个问题:
我希望有一个对象,我称之为playerController,跟随玩家触摸和冰球,可以被控制器击中,并且在这种情况下会反弹控制器。
不知怎的比如AirHockey游戏。
我构造了两个具有纹理和物理特性的SKNode,因此如果重力打开或控制器以某种速度移动,它们会相互反弹。
但是如果通过以下动作移动控制器,则冰球不会反弹。
SKAction *moveTo = [SKAction moveTo: CGPointMake(touch.position.x ,touch.position.y) duration: 0.1];
[self.controllerPlayerOne runAction: moveTo];
为什么呢?我已经在文档和几个教程中搜索过,但没有一个解决我的问题。也许这是SpriteKit开发人员想要的,但在这种情况下如何实现跟随触摸?
希望有人可以提供帮助。
编辑:
目前,我通过将控制器位置设置到触摸位置并通过使用触摸的最后和当前位置计算速度来获得控制器冰球行为。每次触摸移动。
这很不错。
答案 0 :(得分:5)
这是设计的。在cocos2d btw中可以观察到相同的行为。
事情是:移动动作移动精灵,而不是物理体。即使物理体确实遵循精灵,移动动作也会超越物理体的运动,最好将它放在精灵所在的位置。
相反,当使用物理实体时,您必须通过改变身体的速度来移动它们,否则您将无法再可靠地使用移动动作。然后物理体移动精灵。