作者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