2015-03-24 79 views
1

我希望你們都可以提供幫助。我正在研究一款棋盤遊戲的應用程序。我有六角形的瓷磚,這些瓷磚在遊戲開始時隨機調用。這些瓷磚中的每一個都具有值爲1的四條邊,並且其他兩條邊的值爲2和3.如何檢測其他SKSpriteNodes的子節點的相交節點

每個瓷磚是在邊緣上具有透明矩形節點的SKSpriteNode。有5種不同類型的瓷磚,他們需要與子節點分開的子畫面,因爲除了隨機佈局外,他們的區域也隨機旋轉。所以我需要以編程方式知道哪些瓦片邊緣觸及其他瓦片的哪些邊緣。

像這樣:

https://app.box.com/s/nnym97st3xmrsx979zchowdq1qwsmpoo

(我試過後的什麼,我試圖完成的圖像,但顯然我沒有足夠高的評級。); - )

例如:當然只有具有動態,移動物體作品如果「2」被觸摸「3」等

我第一次嘗試碰撞檢測,但是。

我嘗試了一個IF語句來比較其他節點是否正在觸摸,然後記住父節點特定的座標,以至於無法正常工作。

然後我嘗試intersectsNode,但似乎只適用於同一父母下的節點。 我目前正在與convertPoint,以獲得匹配場景的座標,從而具有可比性。但我似乎無法按我需要的方式工作。

必須有一些簡單的東西,我沒有看到。有任何想法嗎?

回答

0

當然不簡單。

一個解決方案是開始你所有的形狀彼此稍微間隔。將不可見的子節點與物理實體一起添加到所有六面,並根據其等級(1,2或3)給每個物理實體一個合適的分類。

當你開始遊戲時,通過使用你喜歡的任何移動方法將所有的外層節點移動到適當的位置(兩側接觸)。當每個十六邊接觸另一個時,這會給你聯繫消息。聯繫人信息會告訴你哪邊號碼正在接觸其鄰居。

這一思想的具體編碼取決於當前的代碼,遊戲等...

enter image description here

+0

有趣。我確實嘗試了一些類似的方法,讓子節點在加載時只移動幾個像素,但沒有產生任何結果。初始放置時節點已經重疊,可否阻止碰撞檢測?如果是這樣,我可以通過調整你的方法來調整它,並簡單地讓子節點從十六進制的中心移動到外邊緣。這可能比必須自己移動所有格子更容易。非常感謝你!我會在早上做一個測試。 ;-) – Freedlun 2015-03-26 02:31:33

+0

@Freedlun - 移動格子並不難。如果你知道每一個的結束位置,你可以使用SKAction moveTo x,y over duration。一起運動的格子甚至可以讓你的遊戲看起來很酷的啓動動畫。 – sangony 2015-03-26 12:42:03

+0

確實如此。其實這正是我所做的,儘管我是用childern做的。使用SKActions我將Edge sprites從(0,0)移動到它們的位置,它完美地工作!聯繫被檢測到。現在我可以繼續討論遊戲的其他方面。非常感謝! – Freedlun 2015-03-26 14:11:28

相關問題