游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: doudoubb

求助:如何让mesh缓慢移动?

[复制链接]

5

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2006-5-27 21:10:00 | 显示全部楼层

Re:求助:如何让mesh缓慢移动?

呜呜,最近要忙得事情比较多。有空就调试这个程序,还是不成。

帮帮忙吧~~

5

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2006-5-27 22:15:00 | 显示全部楼层

Re: 求助:如何让mesh缓慢移动?

下面的是我的程序,如果有时间请大家帮忙看一下下吧,谢谢了!
主要修改的地方是在pmesh.cpp中bool Display(float timeDelta)函数中。我想按下“f”键后,让地球慢慢跳起,又回到原地。

现在不是不跳,就是嗖的一下跳起来。
如果让它回到原地,就会不动。脑脑太聪明了,绝不做无用功。
[em4]

sf_2006527221453.rar

294.76 KB, 下载次数:

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
发表于 2006-5-27 23:43:00 | 显示全部楼层

Re: 求助:如何让mesh缓慢移动?

在解决你的问题前给你提点建议:
1。全局变量前面加g_
2。工程要把源代码包含全了,你的这个工程是没法生成程序的

解决方案:
1。定义全局变量
unsigned int g_jumpstart=0;
2。处理按键的时候用这个
                if( ::GetAsyncKeyState('F') & 0x8000f )
                {
            g_jumpstart=timeGetTime();
                }               
3。在按键处理程序后面加上如下代码
        if (g_jumpstart!=0)
                {
                        unsigned int T=timeGetTime()-g_jumpstart;
                        float t_Heigth=0.0f;
                        if (T<2000)
                        {
                                t_Heigth=(float)T/1000;
                        }else if((T>=2000)&&(T<4000))
                        {
                                t_Heigth=2.0f;
                        }else if((T>=4000)&(T<6000))
                        {
                                t_Heigth=(float)(6000-T)/1000;
                        }else if(T>=6000)
                        {
                                g_jumpstart=0;
                        }
                        D3DXMATRIXA16 matWorld;
                        D3DXMatrixTranslation(&matWorld,0.0f,t_Heigth,0.0f);
                        Device->SetTransform(D3DTS_WORLD,&matWorld);
                }

0

主题

275

帖子

676

积分

高级会员

Rank: 4

积分
676
发表于 2006-5-28 01:30:00 | 显示全部楼层

Re:求助:如何让mesh缓慢移动?

for ( int j=0; j<100000; j++ )
{
time( &finish );
elapsed_time = difftime( finish, start );
if ( elapsed_time > 0.03f )
{
D3DXMATRIX matWorld;
D3DXMatrixTranslation( &matWorld, 0.0f, 1.0f,0.0f );//* j
Device->SetTransform( D3DTS_WORLD, &matWorld );
time( &start );
}

你一??Frame就作了100000次移?舆\算
?然只能看到最後的?算?果

一??Frame只要作一次移?舆\算


??蚴澜缡强糠e分?挝?r?累加??恿

5

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2006-5-28 13:58:00 | 显示全部楼层

Re: Re: 求助:如何让mesh缓慢移动?

seer: Re: 求助:如何让mesh缓慢移动?

在解决你的问题前给你提点建议:
1。全局变量前面加g_
2。工程要把源代码包含全了,你的这个工程是没法生...


谢谢你的建议~~以后一定注意。按你的方法,地球已经慢慢上升了~~~高兴死了。
可是我把它做了如下修改后,地球就只下降,没有上升的动作了,为什么呢?
float t_Heigth=0.0f;
int t_top = 0;
if (g_jumpstart!=0)
{
        unsigned int T=timeGetTime()-g_jumpstart;
        if (T<2000)
        {
                t_Heigth=(float)T/500;
        }else if((T>=2000)&&(T<4000))
        {
                t_Heigth=4.0f;
        }else if((T>=4000)&(T<40000))
        {
                t_Heigth=(float)(40000-T)/1000;
        }else if(T>=40000)
        {
                g_jumpstart=0;
        }
                D3DXMATRIXA16 matWorld;
                D3DXMatrixTranslation&matWorld,0.0f,t_Heigth,0.0f);
        Device->SetTransform(D3DTS_WORLD,&matWorld);
        top = 1;
        }

        if (top !=0)
        {               
         D3DXMATRIXA16 matWorld;
         D3DXMatrixTranslation(&matWorld,0.0f,-t_Heigth,0.0f);
         Device->SetTransform(D3DTS_WORLD,&matWorld);
         top = 0;
        }

为什么呢?就是想让地球再落下来的。

5

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2006-5-28 13:59:00 | 显示全部楼层

Re: Re:求助:如何让mesh缓慢移动?

Aming: Re:求助:如何让mesh缓慢移动?

for ( int j=0; j<100000; j++ )
{
time( &finish );
elapsed_time = difftime( finish, start )...


原来是这样呀~~谢谢~~
可是积分单位时间是什么呢? [em7]

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
发表于 2006-5-28 16:21:00 | 显示全部楼层

Re: Re: Re: 求助:如何让mesh缓慢移动?

doudoubb: Re: Re: 求助:如何让mesh缓慢移动?



谢谢你的建议~~以后一定注意。按你的方法,地球已经慢慢上升了~~~高兴死了。
可是我把它做了如下修改后...

你那个if(top!=0){...}
完全是不需要的
还有,如果T>4000的话,地球会直接飞出屏幕。
应该写成
else if((T>=4000)&(T<40000))
{
t_Heigth=(float)(40000-T)/9000;
}

5

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2006-5-29 08:45:00 | 显示全部楼层

Re: Re: Re: Re: 求助:如何让mesh缓慢移动?

seer: Re: Re: Re: 求助:如何让mesh缓慢移动?
你那个if(top!=0){...}
完全是不需要的
还有,如果T>4000的话,地球会直接飞出屏幕。
应该写成
el...


谢谢·~~
我现在才明白你的程序,我还是太浮躁了。 [em10]

为什么我每次在地球还在运动得过程中,再按F键得话,地球就回到原点重新跳了呢?能否在已经运动到的位置继续跳?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 14:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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