-----------------西昌.何雨锋 各种碰撞
假设只能用TV_COLLISIONRESULT结构来检测碰撞,那么可以检测到如下的一些碰撞:
Mesh:
bool mesh->Collision(线的起点,线的终点,TV_TESTTYPE_ACCURATETESTING,0)
返回的bool值表示mesh是否碰到了线,无法访问任何碰到的数据。最后一个参数可以写0,也可以写一个变量地址,如果是变量,则该变量
将返回起点与碰撞点间的距离。
bool mesh1->AdvancedCollision(&vector1,&vector2,&col1,TV_TESTTYPE_ACCURATETESTING)
不但能表示是否碰撞了,还得到了一个碰撞结构col1.
得到的结果有:
bool col1.hascollided 是否碰撞了
int col1.MeshID mesh的id //实际完全无意义,因为mesh本身已经指明了碰撞的对象。
collisionimpact.x 碰撞点的x(其他坐标类推,但是是Y和Z要大写)
bool Actor2->Collision(线的起点,线的终点,TV_TESTTYPE_ACCURATETESTING,0)
bool Actor2->AdvancedCollision(&vector1,&vector2,&col1,TV_TESTTYPE_ACCURATETESTING)
同mesh一样
Scene:
void scene1->AdvancedCollision(&起点1,&起点2,&col1,TV_COLLIDE_MESH,TV_TESTTYPE_ACCURATETESTING,tvtrue);
返回碰撞的结构col1,第4个参数是确定检测什么的碰撞,参数有
TV_COLLIDE_MESH //mesh的碰撞
TV_COLLIDE_TERRAIN //陆地terrain的碰撞
TV_COLLIDE_LANDSCAPE //陆地的碰撞
TV_COLLIDE_BSPTREE //BSP地图的碰撞
TV_COLLIDE_OCTREE
TV_COLLIDE_ACTOR //Actor角色的碰撞
TV_COLLIDE_PHYSICOBJECT
TV_COLLIDE_ACTOR2 //Actor2的碰撞