|
|

楼主 |
发表于 2008-6-9 21:30:00
|
显示全部楼层
Re:怎么让敌人发现我时面向我啊?
void anmobj::setman(int i,float y,float x,float z)//显示人
{ if(model[0]==NULL) return; //模型为空返回
srand(timeGetTime()); //
man.qd[2]=y; //所在高度
counter++; //模型i计数指针加一
if(counter>4) //用于动作延时
{ counter=0; //模型i计数置0
if(man.dz!=19) frame++; //是活的动作序列号+1
else {frame=man.death;}
if(man.dz==1) //跑动中
{if(manmove(i)==true) //到目标点
{if(man.dz>15)
{if(man.dz==16) man.death=177;//死亡帧
if(man.dz==17) man.death=183;//死亡帧
if(man.dz==18) man.death=189;//死亡帧
man.dz=19;frame-=1;
return;
}//完成倒地
man.dz=dongzuo[rand()%7]; //随机选取一个动作
frame=anim[0][man.dz].start;//取被选取动作的开始帧
}
}
if(frame>anim[0][man.dz].end) //到动作尾帧了吗?
{ if(man.dz>15)
{if(man.dz==16) man.death=177;//死亡帧
if(man.dz==17) man.death=183;//死亡帧
if(man.dz==18) man.death=189;//死亡帧
man.dz=19;frame-=1;
return;
}//完成倒地
if(man.dz!=1) //停下的
{ man.dz=dongzuo[rand()%7]; //随机选取一个动作
double a = (z-man.qd[1])/(x-man.qd[0]);
float b = atan(a);
if (((re+60)<(re+90-b))&&((re+90-b)<(re+120)))
{
man.dz=2;
man.zd[0]=x;
man.zd[1]=z;
re=re-b+90;
}
}
frame=anim[0][man.dz].start;//取被选取动作的开始帧
}
}
///////////////////////////////////////////////////////////////////
glPushAttrib(GL_CURRENT_BIT);//保存现有颜色属性
glPushMatrix();//glPopMatrix();
glTranslatef(man.qd[0],man.qd[2], -man.qd[1]);//位置
glRotatef(re+90,0,1,0);//
glScaled(.06f,.06f,.06f);//
glEnable(GL_TEXTURE_2D);//
if(model[0]!=NULL)
{// texture[0]->ChangeSettings(GL_LINEAR,GL_LINEAR_MIPMAP_LINEAR,
// GL_CLAMP,GL_CLAMP,0);//GL_MODULATE);//
texture[0]->MakeCurrent();
glEnable(GL_TEXTURE_2D);
md2_drawModel (model[0],(int)frame,0,0);//
}
if(model[1]!=NULL && man.dz<size[1]-1)
{// texture[1]->ChangeSettings(GL_LINEAR,GL_LINEAR_MIPMAP_LINEAR,
// GL_CLAMP,GL_CLAMP,0);//GL_MODULATE);//
texture[1]->MakeCurrent();
md2_drawModel (model[1],(int)frame,0,0);//
}
glDisable(GL_TEXTURE_2D);//
glPopMatrix();//
glPopAttrib();//恢复前一属性
} |
|