2016-01-23 80 views
0

我正在寻找一种方法来测试节点是否已经在屏幕侧边和移动墙之间被挤压(如垃圾压缩机)。检测由于对象被挤压而导致的节点中的重叠

从视觉上看,屏幕右侧有一个正方形,然后一个垂直矩形将其推向屏幕的左侧。

我的墙和玩家节点都有物理实体,墙面以固定速率向玩家移动。很明显,在某一时刻,墙壁与玩家重叠,因为墙壁没有更多空间推动玩家。有没有办法检测节点之间的重叠?

我已经使用这个尝试: (墙壁被压扁在屏幕左侧的播放器)

if (playerNode.position.x + playerNode.size.width/2 > wallNode.position.x-wallNode.size.width) 
{ 
//Do whatever 
} 

但这个工作相当挑剔,我宁愿使用内置的东西物理引擎如果有的话 谢谢!

+1

你应该更新你的问题,以显示努力解决问题,并为了提供更多的上下文。参见[如何提出一个好问题](http://stackoverflow.com/help/how-to-ask)这样的问题往往是低估的。关于问题本身......是的,你可以检查移动墙的位置,并根据检查“联系”。或者你可以为墙和节点制作物理实体并以这种方式检测联系。 – Whirlwind

回答

0

好吧,嗯,我找到了一个解决方案,我在做什么 -

如果你使用:

if ((playerNode.intersectsNode(wallNode) != nil) 
{ 
//Do whatever 
} 

你得到确切的结果,我一直在寻找。玩家和墙壁仍然会正常碰撞,但如果玩家被碾压在墙上,这个动作就会被调用。我只是把这个如果然后进入方法:

override func update(currentTime: CFTimeInterval) { 
} 
相关问题