2016-01-23 97 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) { 
}