【问题标题】:Missing correct collision behaviour of objects, when using moveTo action使用 moveTo 操作时缺少对象的正确碰撞行为
【发布时间】:2013-10-29 23:17:29
【问题描述】:

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

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

有点像 AirHockey 游戏。

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

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

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

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

希望有人可以提供帮助。

编辑:

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

这很好用。

【问题讨论】:

  • 请添加更多相关代码。

标签: sprite-kit


【解决方案1】:

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

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

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

【讨论】:

  • 如果使用动作来移动body+sprite,实际上可以检索联系人。但是由引擎自动处理的碰撞是另一回事;-)。
猜你喜欢
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 2016-02-24
  • 2014-02-01
  • 2013-08-21
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
相关资源
最近更新 更多