- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Windows 程序设计(面向游戏)
6
6
第66章 游戏物理现象
6.1
6.1
66..11 物理运动
将真实世界中的物理现象呈现于游戏中,对于游戏设计来说是相当重要的一个课题,例
如物体移动、碰撞或者物体爆破然后碎片飞散等,都属于物理现象。程序中要制作这些真实
世界中的物理现象的效果,需要用到一些基本的物理概念与数学计算。
这一节里,将从各种物理运动开始,说明游戏中物理效果的运用时机与设计方式。
6.1.1
6.1.1
66..11..11 匀速运动
物体会移动,那这个物体一定具有“速度”,速度是物体在各个方向上“速度分量”的
合成。以一个在2D平面上移动的物体而言,假设它的移动速度为V,X轴方向上的速度分量
为Vx,Y轴方向上的速度分量为Vy,那么V与Vx、Vy间的关系如图6-1所示。
图6-1
匀速运动的原理就是指物体在每一个时刻的速度都是相同的,即Vx与Vy都保持不变。
设计2D平面上物体的匀速运动时,在每次画面更新时,利用物体速度分量Vx 与
Vy的值来计算下次物体出现的位置,产生物体移动的效果。下面将这样的原理以简单
的计算公式表示为:
下次X轴位置=现在X轴位置+X轴上速度分量
下次Y轴位置=现在Y轴位置+Y轴上速度分量
看过了关于等速度运动的原理与程序中设计的方法之后,下面就来设计一个物体在
2D平面上移动的范例程序。
ch6_1
ch6_1
范例cchh66__11
设计小球在显示窗口中进行等速度运动,当碰到窗口边缘时会反弹回来并以反方向
运动的程序。
程序代码:全局变量声明
1 //声明全局变量
2 HINSTANCE hInst;
3 HBITMAP bg,ball;
4 HDC hdc,mdc,bufdc;
5 HWND hWnd;
6 DWORD tPre,tNow,tCheck;
7 RECT rect;
8 int x=50,y=50,vx=20,vy=20;
程序说明
(1)第7行:用来存储内部窗口区域的矩形结构。
150
Windows 程序设计(面向游戏)
(2)第8 行:变量“x”和“y”为窗中小球的显示(贴图)坐标,“vx”和“vy”
则是小球在X轴与Y轴上运动的速度分量。
程序代码:InitInstance()
1 //****初始化函数***********************************************
2
3 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
4 {
5 HBITMAP bmp;
6 hInst = hInstance;
7
8 hWnd = CreateWindow(canvas, 小球弹性碰撞 , WS_OVERLAPPEDWINDOW,
9 CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
10
11 if (!hWnd)
12 {
13 return FALSE;
14 }
15
16 MoveWindow(hWnd,10,10,600,450,true);
17 ShowWindow(hWnd, nCmdShow);
18 UpdateWindow(hWnd);
19
20 hdc = GetDC(hWnd);
21 mdc = CreateCompatibleDC(hdc);
22 bufdc = CreateCompa
文档评论(0)