我有两个spriteNodes英雄和敌人,都是用矩形physicsBody应用的。在更新中,当英雄到达一定的位置时,例如英雄位置.y <= 300,我希望敌人在英雄向下移动时旋转并面对英雄。
我找到的唯一示例代码是来自苹果的冒险,它有一个faceTo类,但我发现它的使用非常复杂。我正在寻找一个好的,干净的解决方案。
提前谢谢。
发布于 2014-05-08 08:53:59
最基本的实现应该如下所示:
- (void)rotateNode:(SKNode *)nodeA toFaceNode:(SKNode *)nodeB {
CGFloat angle = atan2f(nodeB.position.y - nodeA.position.y, nodeB.position.x - nodeA.position.x);
if (nodeA.zRotation < 0) {
nodeA.zRotation = nodeA.zRotation + M_PI * 2;
}
[nodeA runAction:[SKAction rotateToAngle:angle duration:0]];
}重要的是你要了解发生了什么。查找并阅读有关atan2 (http://en.wikipedia.org/wiki/Atan2)的内容,并尝试了解上面的代码是如何工作的。
发布于 2014-05-08 09:03:02
您可以使用xScale属性的SKNode使雪碧面对相反的方式。这可以通过设置:
sprite.xScale = -1.0;然而,事实证明,这会导致physicsBody出现问题,从这个问题可以看出:
JKallio给出了这个问题的解决方案。
他建议将您的sprite保留为另一个SKNode (应用physicsBody)的子节点,并在需要时更改子节点的xScale属性。这也是我在我自己的项目中使用的。
https://stackoverflow.com/questions/23535777
复制相似问题