游戏开发论坛

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

求教:direct编程如何实现视角的切换!!

[复制链接]

6

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2008-7-16 15:17:00 | 显示全部楼层 |阅读模式
使用vc.net2005,修改前是:
                D3DXMATRIX V;
                TheCamera.getViewMatrix(&V);
                Device->SetTransform(D3DTS_VIEW, &V);
修改后是:
bool Display(float timeDelta)
{
        if( Device )
        {
                if( ::GetAsyncKeyState('W') & 0x8000f )
                        TheCamera.walk(4.0f * timeDelta);

                if( ::GetAsyncKeyState('S') & 0x8000f )
                        TheCamera.walk(-4.0f * timeDelta);

                if( ::GetAsyncKeyState('A') & 0x8000f )
                        TheCamera.strafe(-4.0f * timeDelta);

                if( ::GetAsyncKeyState('D') & 0x8000f )
                        TheCamera.strafe(4.0f * timeDelta);

                if( ::GetAsyncKeyState('R') & 0x8000f )
                        TheCamera.fly(4.0f * timeDelta);

                if( ::GetAsyncKeyState('F') & 0x8000f )
                        TheCamera.fly(-4.0f * timeDelta);

                if( ::GetAsyncKeyState(VK_UP) & 0x8000f )
                        TheCamera.pitch(1.0f * timeDelta);

                if( ::GetAsyncKeyState(VK_DOWN) & 0x8000f )
                        TheCamera.pitch(-1.0f * timeDelta);

                if( ::GetAsyncKeyState(VK_LEFT) & 0x8000f )
                        TheCamera.yaw(-1.0f * timeDelta);
                       
                if( ::GetAsyncKeyState(VK_RIGHT) & 0x8000f )
                        TheCamera.yaw(1.0f * timeDelta);

                if( ::GetAsyncKeyState('N') & 0x8000f )
                        TheCamera.roll(1.0f * timeDelta);

                if( ::GetAsyncKeyState('M') & 0x8000f )
                        TheCamera.roll(-1.0f * timeDelta);

                D3DXMATRIX V;
                TheCamera.getViewMatrix(D3DXMatrixScaling(&V,0.001,0.001,0.001));//切换x文件的大小
                Device->SetTransform(D3DTS_WORLD, D3DXMatrixScaling(&V,0.01,0.01,0.01));//切换x文件的大小

                Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0x00000000, 1.0f, 0);
                Device->BeginScene();
                for(int i = 0; i < Mtrls.size(); i++)
                {
                        Device->SetMaterial( &Mtrls );
                        Device->SetTexture(0, Textures);
                        Mesh->DrawSubset(i);
                }       
                d3d:rawBasicScene(Device, 1.0f);

                Device->EndScene();
                Device-&gtresent(0, 0, 0, 0);
        }
        return true;
}



修改前可以变换视角,.x文件比较,将其缩小。修改后无法变换。请帮帮忙!谢谢!
这是一个杯子倒水的过程,在问一下如何实现杯子倾倒的过程,谢谢!

6

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
 楼主| 发表于 2008-7-16 15:19:00 | 显示全部楼层

Re:求教:direct编程如何实现视角的切换!!

.x文件比较大,将其缩小后就无法变换视角了!

6

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
 楼主| 发表于 2008-7-17 16:14:00 | 显示全部楼层

Re:求教:direct编程如何实现视角的切换!!

没有人能帮忙一下吗?

6

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
 楼主| 发表于 2008-7-18 09:37:00 | 显示全部楼层

Re:求教:direct编程如何实现视角的切换!!

请帮帮忙!谢谢

0

主题

37

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2008-7-18 17:19:00 | 显示全部楼层

Re:求教:direct编程如何实现视角的切换!!

我好象在CSDN就就看见这个帖子了,我正在学习做游戏ing,你的问题我不知道怎么解决,呵呵

8

主题

70

帖子

79

积分

注册会员

Rank: 2

积分
79
发表于 2008-7-19 12:31:00 | 显示全部楼层

Re: 求教:direct编程如何实现视角的切换!!

缩小会将4.0*timedelta也缩小,缩到0.01是不动啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 23:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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