作者littleshan (我要加入劍道社!)
看板GameDesign
標題Re: [程式] 遊戲中hit Test的方法
時間Fri May 14 10:54:18 2010
※ 引述《QQ29 (我愛阿蓉)》之銘言:
: 我現在HitTest 是針對每個 物體 自己去判斷有沒有被hit到
你的 hit test 到底是什麼意思
是指說滑鼠點到顯示區域的某塊位置時
要選取該位置的物件嗎?
如果你的目的是這樣
那解法其實非常簡單
就是產生另一塊與顯示區域大小相同的 buffer
在你畫出所有物件的時候
也一起畫在這塊 buffer 上
唯一不同的地方在於,你是把「物件的編號」填入這塊 buffer
而不是物件的顏色
所以當你的滑鼠點在某個 pixel 上時
就去該 buffer 看那個 pixel 的物件編號是多少
就知道你選到了哪個物件
如果你用的是 OpenGL
去 google 找 opengl select buffer 就可以找到相關的 tutorial
DirectX 我不熟不過應該也有對應的功能
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.29.108
1F:推 QQ29:其實我是用XNA ~ 05/14 15:42
3F:→ QQ29:他有提供 ray intersection 判斷點到哪個物體 05/14 15:43
4F:→ QQ29:但我目前卡住的問題是 如果物體會動態的移動 05/14 15:43
5F:→ QQ29:我bounding box不會動 如果有遮擋 該怎判斷點到誰 05/14 15:44
6F:→ QQ29:我OPENGL這有使用過~但是和目前遇到的似乎完全不一樣方法.. 05/14 15:45
7F:→ littleshan:看那個intersection point誰比較近呀 05/14 17:09
8F:推 QQ29:但是其實我boundingbox都不會動耶 05/15 23:13
9F:→ QQ29:物體透過矩陣 產生移動 但是unproject後 還是和原來bouding 05/15 23:14
10F:→ QQ29:box 去做intersection...就是這範例這樣做的 05/15 23:14
11F:→ QQ29:只是他物體不會動 且他bounding box 原本就有深淺 05/15 23:14
12F:→ QQ29:直接判斷距離即可 但我物體會隨時在動...不知道怎辦 05/15 23:14
13F:推 teexit:BB要自己隨時更新 當初我在做的時候當物體移動BB也會跟著 05/22 23:21
14F:→ teexit:自己給值 05/22 23:21
15F:→ teexit:印象中沒記錯的話 XNA 的BB是指有MAX和MIN兩點 所以就隨時 05/22 23:23
16F:→ teexit:更新他吧~~ 05/22 23:23