游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4671|回复: 5

求助:openGL视角跟随角色移动的问题

[复制链接]

2

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2010-8-7 19:54:00 | 显示全部楼层 |阅读模式
本人初学openGL  我做了一个开车的游戏,可是在摄像机跟随车一动的时候总还会出现偏差,视角比车转的略微快一点,这是怎么回事,还有啊,加载进去的3DS模型是静止的,可是一些图片加再加进去之后就会跟着视角一起一动,本来不该一动的,??? [em7] [em7] [em7] [em7]希望上士,下士,司令,将军。。。来指导一下

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2010-8-8 21:36:00 | 显示全部楼层

Re:求助:openGL视角跟随角色移动的问题

问题没表达清楚,拒绝回答。

2

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
 楼主| 发表于 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();
会不会实现摄像机跟随物体的移动

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2010-8-9 11:05:00 | 显示全部楼层

Re:求助:openGL视角跟随角色移动的问题

  1. glLoadIdentity();
  2. myScene->controlmycay();
  3. glLoadIdentity();
  4. myScene->ShowmyEye();
复制代码

这个改成如下试试:

glLoadIdentity();
myScene->ShowmyEye();

glLoadIdentity();
myScene->controlmycay();

2

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
 楼主| 发表于 2010-8-10 21:42:00 | 显示全部楼层

Re:求助:openGL视角跟随角色移动的问题

这样改过会出错,物体脱离摄像机自己跑掉了

0

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2010-8-19 14:56:00 | 显示全部楼层

Re: 求助:openGL视角跟随角色移动的问题

[em16]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-7 18:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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