0

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

例如,一只动物与另一只动物奔跑。在这种情况下,碰撞检测方法被调用。但是当动物跳过动物并在其上“行走”时,碰撞检测不会被激活。

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

我的代码:

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

2 回答 2

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)

小心不同的坐标系,有时可能会令人困惑。希望这会有所帮助,请随时询问是否有任何不清楚的地方。

于 2014-03-21T03:22:00.153 回答
0

碰撞检测将在以太情况下被调用,但在回调中您可以比较速度向量;如果他们彼此远离,则将其视为错过。

于 2014-03-20T03:36:30.180 回答