没有合适的资源?快使用搜索试试~ 我知道了~
【Visual C++】游戏开发笔记二十 游戏基础物理建模(二) 重力系统的模拟.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 143 浏览量
2023-03-06
20:23:48
上传
评论
收藏 759KB DOCX 举报
温馨提示
试读
12页
。。。
资源推荐
资源详情
资源评论
【Visual C++】游戏开发笔记二十 游戏基础物理建模(二) 重力系统的模拟
本系列文章由 zhmxy555(毛星云)编写,转载请注明出处。
http://blog.csdn.net/zhmxy555/article/details/7496200
作者:毛星云 邮箱: happylifemxy@qq.com 欢迎邮件交流编程心得
在笔记十八里面我们介绍了基础的匀速与加速运动的物理建模,基本的物理建模导论和前续相关知识的讲解请移
本节知识相当于该节知识的一个拓展,模拟生活中的重力系统,它可以为我们开发的游戏提供一个近乎逼真的重
力模拟系统,也可以为我们游戏引擎开发中物理系统相关代码的书写提供一定的思路。
重力模拟实现起来其实非常简单,我们都知道,重力的表现形式其实就是一个大小约等于9.8 米每二次方秒,方
向垂直地面指向地心的加速度。且由于 X 轴方向的速度不受重力影响,所以我们只要将物体的速度进行正交分解,
处理竖直向下的 Y 轴方向即可。
下面用本节的实例中的实现重力模拟的代码来具体说明,这一节着重讨论重力,所以演示时暂时先忽略下坠时的
空气阻力与触地时的摩擦力。
这是一个平抛运动,小鸟将具有水平方向的初速度,且受到向下的重力,即小鸟具有向下的加速度,若碰到地面
就会进行反弹,速度反向。
首先我们定义下坠物体的初始坐标与初始速度,初始横坐标 x=0,初始纵坐标 y=100,初始水平方向速度 vx=6,
即
[cpp] view plaincopyprint?
1.
2.
int
//初始横坐标 x=0,初始纵坐标 y=100,初始水平方向速度 vx=6,
//初始竖直方向速度 vy=0,重力加速度 gy=3(这里为了方便演示,我们设置为 3)
[cpp] view plaincopyprint?
1.
2.
3.
//计算 X 轴方向贴图坐标,每调用一次 MyPiant( ),x 坐标就加上一个恒定不变的 vx,相当于匀速运动
//计算 Y 轴方向速度分量,vy随着每一次 MyPiant()函数的调用就加上一个 gy(重力加速度)
vy = vy + gy;
4.
//计算 Y 轴方向贴图坐标,每调用一次 MyPiant(),y 坐标就加上一个刚改变过后的 vy,相当于加速运
5.
6.
7.
//判断是否触地,如果触碰到窗口边界,vy调整为相反方向
8.
if(y >= rect.bottom-60)
9.
{
10.
11.
12.
}
[cpp] view plaincopyprint?
1.
2.
3.
4.
5.
6.
7.
8.
9.
#include "stdafx.h"
#include <stdio.h>
HDC
hdc,mdc,bufdc;
hWnd;
HWND
DWORD
x=0,y=100,vx=6,vy=0,gy=3;
//初始竖直方向速度 vy=0,重力加速度 gy=3(这里为了方便演示,我们设置为 3)
13.
14.
MyRegisterClass(HINSTANCE hInstance);
InitInstance(HINSTANCE, int);
WndProc(HWND, UINT, WPARAM, LPARAM);
MyPaint(HDC hdc);
20.
21. //****WinMain 函数,程序入口点函数**************************************
22. int APIENTRY WinMain(HINSTANCE hInstance,
23.
24.
25.
LPSTR
int
lpCmdLine,
nCmdShow)
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
{
MSG msg;
MyRegisterClass(hInstance);
//初始化
if (!InitInstance (hInstance, nCmdShow))
{
}
//初始化 msg
while( msg.message!=WM_QUIT )
{
{
DispatchMessage( &msg );
}
else
{
}
}
return msg.wParam;
}
58. //****设计一个窗口类,类似填空题,使用窗口结构体*********************
59. ATOM MyRegisterClass(HINSTANCE hInstance)
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
{
wcex.lpfnWndProc
wcex.cbClsExtra
wcex.cbWndExtra
wcex.hInstance
wcex.hIcon
= (WNDPROC)WndProc;
= 0;
= hInstance;
= NULL;
剩余11页未读,继续阅读
资源评论
不吃鸳鸯锅
- 粉丝: 8225
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功