0

我的 _player 有一个 SKSpriteNode,并且 _player 节点有两个子节点组成我的角色。

具有此配置的精灵的角色朝右。

当我需要角色面朝左时,我尝试使用 xScale = -1.0 但是当我这样做时,框架似乎并没有反映屏幕上看到的内容,因为我的 CGRectIntersectsRect 表现得好像角色仍然面向原始方向。

除了 cgrect 问题,我将角色旋转到对象,所以我最终不得不做这样的事情:

 if( sprite.xScale == -1.0){
    sprite.zRotation = atan2f(direction.y, direction.x);
    } else {
        sprite.zRotation = atan2f(-direction.y, -direction.x);
    }

什么是翻转播放器的正确方法。如果我使用 xScale,对于我的碰撞检测来说,数学似乎会变得不必要地复杂。我是否需要两个面向每个方向的玩家实例。我需要两组精灵吗?

4

2 回答 2

0

这是一个可以解决您问题的教程。 http://www.raywenderlich.com/45152/sprite-kit-tutorial-animations-and-texture-atlases 我发现它很有帮助。项目中的熊会根据您触摸屏幕的哪一侧翻转。6号是我相信你的答案是......

于 2014-02-21T22:15:22.110 回答
0

这已经晚了,但我想我找到了解决方案。创建一个全局节点(跟踪位置)并将您的 xscale、yscale 节点作为子节点添加到此全局节点。您现在可以跟踪位置(全局),而不必担心 -xscale/-yscale(子级)会影响场景中的位置查找。

于 2020-06-14T00:43:38.730 回答