2009-09-25 70 views
2

在精靈中有一個帶有三角形圖形的項目。我正在將這些精靈安排在網格中,以便它們的矩形都重疊。當精靈被觸摸時,他們的z順序正在改變(由我來說),將它們放在zOrder的頂部。Cocos2d iPhone非矩形精靈觸摸檢測

我使用的是Cocos 0.8.1和touch調度器方法。我已經接觸到了工作,但很明顯,被其他精靈重疊的「隱藏」精靈無法觸及。

問題是,「在我的矩形中觸摸」方法是基於精靈的矩形,但圖像是三角形,我想問問是否有人知道可口可樂的測試方法圖像本身是否被擊中。

我似乎記得這是當天流行的熱門測試方法,但我無法找到任何有關如何在Cocos/iPhone Land中完成的參考。

目標是僅在觸摸圖像像素時響應觸摸,而不僅僅是包含精靈的矩形。

回答

0

我見過幾個瓷磚編輯工具,有包括cocos2d的開發商,讓您以直接勾勒兌RECT精確圖像使用貝塞爾曲線提供的一個。在使用Box2D物理時,根據我在Cocos2D站點和youtube上看到的視頻教程和示例,這看起來非常簡單。谷歌瓷磚或地圖編輯器和Cocos2d在YouTube上它應該顯示你幾個工具,你可以使用,並不需要編程任何複雜的幾何碰撞 - 應爲所見即所得。

乾杯,

馬修

4

,而不是針對一個盒子測試,你可以對你想要的任何形狀當然測試。

我最初發布時,你可以使用一個NSBezierPath,但appearantly是ins't iPhone上可用工具包,只能在Mac上。相反,在iPhone上,您可以使用CGPath。

使用CGPathCreateMutable()返回一個const CGPath *(也稱爲CHPathRef
然後使用CGPathAddRectCGPathAddLines來創建我們的路徑創建一個新路徑。
CGPathContainsPoint將測試如果你的點是在形狀。

或者,您可以創建一個客戶的功能(因爲你使用三角形)不只是一個簡單的計算,以檢查您的點是否在三角形內部。數學的位應該做的伎倆(儘管當你旋轉的形狀,它會稍多複雜,我寫咯,你可以然後只需旋轉touc相對^ h點形狀的起源和做碰撞檢測)

對於一個三角形:

C 
    /\ 
/__\ 
A B 
point of touch is P 

以下算法,你應該能夠找到觸摸:

/* first test against a box, for performance */ 
if(P.y > C.y || P.y < A.y || P.x < A.x || P.X > B.x) 
    return false; // false if P falls outside "the box" 

/* then check if its within the shape */ 
/* split the triangle into 2 parts, around the axle of point C */ 
if(P.x < C.x) // if the x value of point P is on the left of point C 
    if(P.y > ((C.y -A.y)/(C.x - A.x)) * P.x) 
     return false; // the point is above the triangle's side AC 
else // if the x value of point P is greater than or equal to point C 
    if(P.y > C.y - ((C.y - B.y)/(B.x - C.x)) * (P.x - C.x)) 
     return false; // the point is above the triangle's side BC 

return true; // the point must be in the triangle, so return true. 

以上是幹編碼的,但應該是正確的。

上面只能對一個三角形的形狀,我畫它(其中C.x是A.x和B.x,以及A和B之間處於相同的高度,但低於C)。當然你可以修改這個來測試任何形狀,但是,你必須權衡這個與使用可用的CGPath

如果您沒有得到它,或者如果它有問題,請告訴我!

1

我發現這個很棒的教程,解釋瞭如何使用兩個美妙的和不可缺少的實用程序,以及Cocos2d和Box2d來檢測碰撞(您也可以類似地使用Chipmunk)。您可以使用它們來設置您的程序,以便以與檢測碰撞相同的方式來檢測觸摸。

http://www.raywenderlich.com/606/how-to-use-box2d-for-just-collision-detection-with-cocos2d-iphone

這裏的鏈接到Zwoptexapp - 幫助您設定的plist文件你的精靈/ spritesheet。

http://www.zwoptexapp.com/

這裏的鏈接到VertexHelper - 允許你跟蹤你的精靈的輪廓,然後轉化大綱成代碼,你可以將其粘貼到您的項目,並與Box2D的,花栗鼠使用等

http://www.springenwerk.com/2010/02/introducing-vertexhelper-for-box2d.html

我還在學習Cocos2d和Box2d我自己和Ray的教程對我非常有幫助。我希望他們也能幫助你!