游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2915|回复: 2

怎么让敌人发现我时面向我啊?

[复制链接]

21

主题

54

帖子

92

积分

注册会员

Rank: 2

积分
92
发表于 2008-6-9 21:29:00 | 显示全部楼层 |阅读模式
                          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=1;
                  man.zd[0]=x;
                                  man.zd[1]=z;
                                  re=re-b+90;
                          }
不好使啊!

21

主题

54

帖子

92

积分

注册会员

Rank: 2

积分
92
 楼主| 发表于 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();//恢复前一属性
}

21

主题

54

帖子

92

积分

注册会员

Rank: 2

积分
92
 楼主| 发表于 2008-6-9 22:23:00 | 显示全部楼层

Re:怎么让敌人发现我时面向我啊?

可以了
                          if(man.dz==1)                                        //停下的
                        {         //随机选取一个动作
                          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.zd[0]=x;
                                  man.zd[1]=-z;
                                  re=re-b;
                                  if(((x-man.qd[0])*(x-man.qd[0])+(-z-man.qd[1])*(-z-man.qd[1]))<=400)
                                  {
                                  man.dz=2;
                                  }
                          }
              
                        }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 08:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表