|

楼主 |
发表于 2010-8-9 09:58:00
|
显示全部楼层
Re:求助:openGL视角跟随角色移动的问题
void My3DScene::controlmycay()
{
if (KEY_DOWN(VK_LEFT))
{
g_Angle-=Speed*4;
}
if (KEY_DOWN(VK_RIGHT))
{
g_Angle+=Speed*4;
}
rad_xz = double(3.14159265* g_Angle/180.0f);
if (KEY_DOWN('F'))
{
qshift=true;
if (Speed<=0.0)
{
Speed=-Speed;
}
if (hshift==true)
{
hshift=false;
}
}
if (KEY_DOWN('R'))
{
hshift=true;
if (Speed>=0)
{
Speed=-Speed;
}
if (qshift==true)
{
qshift=false;
}
}
if (qshift)
{
if (KEY_DOWN(VK_UP))
{
Speed+=qas;
}
if (KEY_DOWN(VK_DOWN))
{
Speed-=has;
if (Speed<0.0)
{
Speed=0;
}
}
}
if (hshift)
{
if (KEY_DOWN(VK_UP))
{
Speed-=qas;
}
if (KEY_DOWN(VK_DOWN))
{
Speed+=has;
if (Speed>0)
{
Speed=0;
}
}
}
g_eye[2]+=sin(rad_xz)*Speed;
g_eye[0]+=cos(rad_xz)*Speed;
g_eye[1]=-0.5;
//glTranslatef(g_eye[0],g_eye[1],g_eye[2]);
GLdouble d=0;
d=atan(g_eye[2]/g_eye[0]);
DrawAModel(4,0.0,-0.4,0.0,d+90,0.8,0.8,0.8);
}
void My3DScene::ShowmyEye()
{
if (KEY_DOWN(VK_SPACE))
{
g_look[0] = float(g_eye[0] -500*cos(rad_xz));
g_look[2] = float(g_eye[2] - 500*sin(rad_xz));
g_look[1] = g_eye[1];
gluLookAt(g_eye[0],g_eye[1]+3,g_eye[2],g_look[0],g_look[1]+2,g_look[2],0.0,1.0,0.0);
}
else
{
g_look[0] = float(g_eye[0] + 500*cos(rad_xz));
g_look[2] = float(g_eye[2] + 500*sin(rad_xz));
g_look[1] = g_eye[1];
gluLookAt(g_eye[0],g_eye[1]+3,g_eye[2],g_look[0],g_look[1]+2,g_look[2],0.0,1.0,0.0);
}
}
上面的代码这样调用 glLoadIdentity();
myScene->controlmycay();
glLoadIdentity();
myScene->ShowmyEye();
会不会实现摄像机跟随物体的移动 |
|