由于对象被压扁而检测到节点重叠
Detecting a overlap in Nodes due to the object being squished
我正在寻找一种方法来测试节点是否已被挤压在屏幕侧面和移动的墙壁(如垃圾压实机)之间。
视觉上,屏幕右侧有一个正方形,然后一个垂直矩形将其推向屏幕左侧。
我的墙和玩家节点都有物理体,并且墙以恒定的速度向玩家移动。很明显,在某一时刻,墙会与玩家重叠,因为墙没有更多的空间来推动玩家。有没有办法检测节点之间的重叠?
我试过使用这个:
(墙壁正在挤压屏幕左侧的玩家)
if (playerNode.position.x + playerNode.size.width/2 > wallNode.position.x-wallNode.size.width)
{
//Do whatever
}
但这工作起来非常挑剔,如果有的话,我宁愿使用物理引擎中内置的东西
谢谢!
好吧,我已经找到了我正在做的事情的解决方案 -
如果您使用:
if ((playerNode.intersectsNode(wallNode) != nil)
{
//Do whatever
}
你得到了我想要的确切结果。玩家和墙壁仍然正常碰撞,但如果玩家被压入墙壁,则调用此动作。我只是将这个 if-then 放入方法中:
override func update(currentTime: CFTimeInterval) {
}
我正在寻找一种方法来测试节点是否已被挤压在屏幕侧面和移动的墙壁(如垃圾压实机)之间。
视觉上,屏幕右侧有一个正方形,然后一个垂直矩形将其推向屏幕左侧。
我的墙和玩家节点都有物理体,并且墙以恒定的速度向玩家移动。很明显,在某一时刻,墙会与玩家重叠,因为墙没有更多的空间来推动玩家。有没有办法检测节点之间的重叠?
我试过使用这个: (墙壁正在挤压屏幕左侧的玩家)
if (playerNode.position.x + playerNode.size.width/2 > wallNode.position.x-wallNode.size.width)
{
//Do whatever
}
但这工作起来非常挑剔,如果有的话,我宁愿使用物理引擎中内置的东西 谢谢!
好吧,我已经找到了我正在做的事情的解决方案 -
如果您使用:
if ((playerNode.intersectsNode(wallNode) != nil)
{
//Do whatever
}
你得到了我想要的确切结果。玩家和墙壁仍然正常碰撞,但如果玩家被压入墙壁,则调用此动作。我只是将这个 if-then 放入方法中:
override func update(currentTime: CFTimeInterval) {
}