我一直在使用的android 2D圖形的android 2D弧的碰撞檢測
c.drawArc(new RectF(50, 50, 250, 250), 30, 270, true, paint);
電弧將旋轉遊戲運行時繪製的旋轉弧線,
我想知道我怎麼可以檢測任何其他遊戲對象(rects,圓圈)與它碰撞 ??
這是我第一次寫的一個遊戲:)
我看到http://hakim.se/experiments/html5/core/01/
由於像這樣提前
我一直在使用的android 2D圖形的android 2D弧的碰撞檢測
c.drawArc(new RectF(50, 50, 250, 250), 30, 270, true, paint);
電弧將旋轉遊戲運行時繪製的旋轉弧線,
我想知道我怎麼可以檢測任何其他遊戲對象(rects,圓圈)與它碰撞 ??
這是我第一次寫的一個遊戲:)
我看到http://hakim.se/experiments/html5/core/01/
由於像這樣提前
弧碰撞是稍硬再進行正常的碰撞,但使用布爾代數,你可以很容易地檢查給定的點是否在你的弧內。
看看下面的圖片。
這裏有3個物品。黑色的球體,可以看到你的弧線,如果碰到它,它可能在你的弧線內。紅色球體位於黑色球體的頂部,它將弧形的「內部」可視化,如果紅色球體內有某物,它肯定不在弧的「內部」。現在還有一個綠色三角形,可視化弧的「截止點」,綠色三角形內的任何東西也絕對不在弧線內。
測試黑球內部是否容易。 (物體到球體中心的距離< =球體半徑)。紅色球體相同。綠色三角形有點棘手,你首先必須構造這個。找到弧的起點和終點弧度。並通過起始弧度旋轉單位矢量。然後通過末端弧度旋轉單位矢量。將這兩個向量延長2 *黑球半徑。現在使用弧的中心點和兩個向量的位置作爲三角形的三點加上中心位置。然後,您可以使用點三角形碰撞求解器之一:http://www.bing.com/search?q=point+triangle+collision&go=&form=QBLH&scope=web
所以請記住:碰撞弧=(碰撞黑色球體)& &(碰撞與紅球)& &(碰撞綠色三角形)!。
非常感謝,我會努力實現這個在Android和告訴你我會發生什麼。 – ibmkhd 2011-06-11 09:19:17
對於我的情況,我用矩形代替三角形,因爲曲線恰好是一個半圓,這對我來說很好,感謝您的幫助 – ibmkhd 2011-06-12 07:04:18
這是一個Android問題,但概念在所有語言中都是相同的。這幫助了我的JS Canvas。 +1 – 2016-01-21 15:46:15