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