【问题标题】:Node hierarchy and coordinates are driving me nuts节点层次结构和坐标让我抓狂
【发布时间】:2012-09-18 19:32:03
【问题描述】:

我有一个游戏层和一个名为 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 进行了几乎相同的碰撞检测,它似乎工作得很好。是因为精灵表吗?我现在已经挣扎了几天,但我根本无法让它工作。更改几乎没有给我任何提示我做错了什么。所以你几乎是我最后的希望......

【问题讨论】:

    标签: iphone objective-c cocos2d-iphone


    【解决方案1】:

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

    CGPoint realPos = [self convertToWorldSpace:position];
    

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

    至于 self.parent.parent.parent 等等……你应该read the latter part of this answer。这不是一个好习惯,因为它是一个脆弱的结构,当您更改节点层次结构时很容易破坏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 2021-05-20
      • 2013-06-19
      • 2010-12-29
      • 1970-01-01
      相关资源
      最近更新 更多