第一次写博客,呵呵。可能在大家面前献丑了。
游戏引擎中避不开少的要数物理引擎了,这篇博客就来讲解一下非正碰。
处理碰撞分为如下几步:
一、将对象1与对象2速度沿着x,y分解。obj1速度为(vx1,vy1,vz1)、obj2速度为(vx2,vy2,vz2);(一般定义对象时的速度就是沿着X轴、沿着Y轴Z轴的这时可省去该步骤)
二、将(vx1,vy1,vz1)和(vx2,vy2,vz2)沿着碰撞方向建立坐标系再次分解。
三、速度合成(垂直于碰撞方向的两个坐标轴速度不变,沿着坐标轴的方向按正碰处理)
四、速度方向还原(将速度在沿X,Y,Z分解)
这是球在平面上的非正碰代码
bool CCubeView::IsCollider(CSpher* spher1,CSpher* spher2)
{
//碰前变量
float x1= spher1->get_x_center();
float y1= spher1->get_y_center();
float z1= spher1->get_z_center();
float x2= spher2->get_x_center();
f