0

我有一个游戏层和一个名为 TestNode 的子节点 (CCNode)。我向 TestNode 添加了一个精灵表,并在这个精灵表中添加了几个“导弹”。现在我的问题是那些导弹与游戏层中的物体的碰撞检测,因为坐标似乎是错误的。

我在导弹实施中有以下几点:

//first I get the Game layer
GameLayer *gL = (GameLayer *)self.parent.parent.parent; 
//parent = spritesheet, spritesheet's parent = TestNode, TestNode's parent = Game layer

//Now I convert the coordinates of missile to Game Layer's node space
CGPoint realPos = [gL convertToNodeSpace:self.position];

这大致就是我在我的代码中所做的......它似乎不起作用!我对 TestNode 进行了几乎相同的碰撞检测,它似乎工作得很好。是因为精灵表吗?我现在已经挣扎了几天,但我根本无法让它工作。更改几乎没有给我任何提示我做错了什么。所以你几乎是我最后的希望......

4

1 回答 1

1

您想将导弹位置转换为世界空间:

CGPoint realPos = [self convertToWorldSpace:position];

如果仍然不正确,也许您更改了锚点?在这种情况下,视觉部分(纹理)将简单地从位置偏移,并且仅通过查看它可能看起来不正确。

至于 self.parent.parent.parent 等等……你应该阅读这个答案的后半部分。这不是一个好的做法,因为它是一个脆弱的结构,当您更改节点层次结构时很容易破坏。

于 2012-09-18T11:32:03.817 回答