作者no1kk (我好想你)
看板Flash
標題[問題] 關於hitTest的問題
時間Tue Jan 8 21:10:16 2008
假設我現在做一個射擊遊戲
通常在子彈的部份都是使用hitTest來判斷
但是flash的hitTest只能判斷方形
所有不是方形的東西都會視為方形
(如半徑R的球形會視為是邊長2R的正方形,對角線是L的菱形也會視為是邊長L的正方形)
這樣在判斷上很不實際
如果機體是不規則形、或是大的球型子彈、或是斜向發射的雷射
我就不知道要怎麼去做判斷
請問要怎麼解決這樣的問題呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.59.20
1F:推 easy0519:use Bitmaps, pixel by pixel 去判斷 01/08 21:24
2F:→ easy0519:只是效率不會太好 :( 01/08 21:25
3F:推 cjcat2266:其中一個用大面積shape定義碰撞區 01/08 21:59
4F:→ cjcat2266:另外一個用多個判斷點組成物件 01/08 21:59
5F:→ cjcat2266:這樣算是一種解決方式 01/08 21:59
6F:→ cjcat2266:你可以子彈用圓形當判斷區,機體上面設幾個"判斷點" 01/08 22:00
7F:→ cjcat2266:只要有任何一個判斷點跟子彈有碰撞,就是碰撞成功 01/08 22:00
8F:→ no1kk:子彈比較好解決,因為有飛行方向,我只要在前端設判斷區 01/09 07:51
9F:→ no1kk:但是像是雷射光或是護盾這種東西就很難去想.. 01/09 07:51
10F:→ no1kk:像小遊戲版有個遊戲"設計要塞"裡面有星形的護盾.. 01/09 07:52
11F:→ no1kk:還有可以斜向發射的雷射,這好像用上述方式都沒辦法解決@@ 01/09 07:53
12F:推 etrexetrex:應該用 點到直線的距離公式 判斷? 01/09 16:46
13F:推 cjcat2266:一般3D碰撞判斷也只是用近似的方式 01/09 16:49
14F:→ cjcat2266:所以看你要怎麼用吧,我是習慣簡單的形狀和判斷點混搭 01/09 16:49
15F:→ cjcat2266:要做完美判斷的話會很消耗資源的 01/09 16:49
16F:推 Jedic:我的老辦法都是用當子彈碰撞機體時,判斷他離機體中心的距離 01/10 04:02
17F:→ Jedic:這樣碰撞區域會呈一個圓形 01/10 04:03