SKPhysicsBody一侧碰撞检测

时间:2014-03-19 15:58:46

标签: ios objective-c sprite sprite-kit skphysicsbody

是否可以检测节点是否仅在一侧与另一侧发生碰撞?

例如,与另一只动物对抗的动物。在那种情况下,调用碰撞检测方法。但是,当动物跳过一只动物并且#34;走路时#34;在它上面,碰撞检测不会被激活。

我很感激每一个答案。 感谢

我的代码:

if (lionNode.frame.origin.y + lionNode.frame.size.height < animalNode.frame.origin.y) {
        NSLog(@"Walk");
    }
    else {
        NSLog(@"dead");
    }

2 个答案:

答案 0 :(得分:1)

在碰撞检测回调中检查以下内容。

if(y-origin of the first animal + its height < the y-origin of the second animal){
    //then do the logic for walking on top of another animal (probably nothing would happen here depending on what you are trying to build)
}
else {
    //forward to collision logic (e.g life loss, lose points, restart level ,etc..)
}

如果第一只动物可能会进入第二只动物的下方,那么您需要将您的病情更新为以下

if(firstAnimal.origin.y + firstAnimal.frame.size.height < secondAnimal.frame.origin.y  
|| firstAnimal.origin.y > secondAnimal.frame.origin.y + secondAnimal.frame.size.height)

要警惕不同的坐标系,有时可能会让人感到困惑。 希望这有帮助,随时可以询问是否有任何不清楚的地方。

答案 1 :(得分:0)

在以太的情况下会调用碰撞检测,但在回调中你可以比较速度向量;如果他们彼此离开,就把它视为未命中。