游戏动画技巧

游戏动画技巧

ID:43528076

大小:3.09 MB

页数:88页

时间:2019-10-09

游戏动画技巧_第1页
游戏动画技巧_第2页
游戏动画技巧_第3页
游戏动画技巧_第4页
游戏动画技巧_第5页
资源描述:

《游戏动画技巧》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、游戏动画技巧1游戏动画游戏中播放动画的方式:直接播放视频文件,如片头动画用连续贴图的方式实现动画效果2循环初始化游戏循环读取玩家信息AI和逻辑渲染下一帧同步显示关闭游戏是以无限循环的方式不断地在游戏窗口中进行窗口画面重绘的操作即使画面没有任何变化,重绘的操作还是不断地进行,一直到玩家选择结束游戏为止。3基础动画显示4掌握:定时器使用游戏循环在动画绘制的应用5定时器定时器(Timer)可以每隔一段时间发出一个时间消息,程序一旦接收到这个消息,就可以决定接下来的运算。这样的特性正好可以用来以固定的时间间隔显示图片,产生动画效果。如何建立与使用定时器????6

2、WindowsAPI的SetTimer()函数可为窗口建立一个定时器。每隔一段时间就发出WM_TIMER消息。7定时器的建立定时器是存在一个窗口之内的UINTSetTimer(HWNDhWnd,//接收定时器消息的窗口UINTnIDEvent,//定时器IDUINTuElapse,//时间间隔,毫秒TIMERPROClpTimerFunc//回调函数指针);这个代号在同一个窗口必须是唯一的,且值不为0。若此参数设为1000,则每间隔1秒发出一个WM_TIMER消息设定由系统调用处理WM_TIMER消息的响应函数,如果不用响应函数处理WM_TIMER消息,

3、则此参数应设为NULL。8例:建立定时器SetTimer(hWnd,1,500,NULL);没有指定消息响应函数,就需要在窗口函数中响应WM_TIMER处理定时器消息。在窗口函数中如何响应定时器消息呢??9窗口WM_TIMER响应LRESULTCALLBACKWndProc(HWNDhWnd,…….){//……switch(message){caseWM_TIMER:MyPaint(hdc);break;caseWM_DESTROY://……}//……}10删除定时器定时器建立以后,就会一直按指定的时间间隔发送WM_TIMER消息。如果需要停止这种行为,

4、就用:BOOLKillTimer(HWNDhWnd,//窗口句柄UINTuIDEvent//定时器ID);11定时器动画例子连续摆动的人物位图12定时器动画例子BOOLInitInstance(HINSTANCEhInstance,intnCmdShow){//…..窗口建立//加载位图for(i=0;i<7;i++){sprintf(filename,"girl%d.bmp",i);girl[i]=(HBITMAP)LoadImage();}num=0;SetTimer(hWnd,1,100,NULL);MyPaint(hdc);returnTRUE;

5、}13定时器动画例子LRESULTCALLBACKWndProc(HWNDhWnd,...){inti;switch(message){caseWM_TIMER://定时器WM_TIMER消息MyPaint(hdc);break;caseWM_DESTROY://删除定时器DeleteDC(mdc);ReleaseDC(hWnd,hdc);for(i=0;i<7;i++)DeleteObject(girl[i]);KillTimer(hWnd,1);PostQuitMessage(0);break;}//……………}14MyPaint(HDChdc){i

6、f(num==7)num=0;SelectObject(mdc,girl[num]);BitBlt(hdc,0,0,600,450,mdc,0,0,SRCCOPY);num++;}15定时器动画结果SetTimer(hWnd,1,500,NULL);SetTimer(hWnd,1,1000,NULL);演示并比较效果16定时器的优缺点优点:简单方便。缺点:(1)适合显示简易动画;小型的游戏。(2)游戏本身需要显示顺畅的游戏画面,使玩家感觉不到延迟的状况。基本上游戏画面必须在一秒钟之内更新至少25次以上。(3)这一时间之内程序:绘制、音效、数学物理的计算等

7、操作。(4)使用定时器的消息来驱动这些操作,往往达不到所要求的标准,(5)产生画面显示不顺畅和游戏响应时间太长的情况17WM_TIMER做定时器精度不高,而且很难与游戏循环结合。游戏循环速度很快,通常都是25fps以上使用定时器,可能造成游戏画面响应不及时、不流畅。解决方案????18游戏循环动画19循环动画游戏循环是将原先程序中的消息循环加以修改。判断其中的内容目前是否有要处理的消息?如果有则进行处理,否则按照设定的时间间隔来重绘画面。20构建一个游戏循环while(msg.message!=WM_QUIT){if(PeekMessage(&msg,N

8、ULL,0,0,PM_REMOVE)){//检查消息TranslateMessa

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。