代码改变世界

【Visual C++】游戏开发笔记二十 游戏基础物理建模(二) 重力系统的模拟

2012-05-06 02:05  java ee spring  阅读(529)  评论(0编辑  收藏  举报

 

本系列文章由zhmxy555(毛星云)编写,转载请注明出处。

http://blog.csdn.net/zhmxy555/article/details/7496200

作者:毛星云    邮箱: happylifemxy@qq.com    欢迎邮件交流编程心得


 

在笔记十八里面我们介绍了基础的匀速与加速运动的物理建模,基本的物理建模导论和前续相关知识的讲解请移步:


  【Visual C++】游戏开发笔记十八游戏基础物理建模(一) 匀速与加速运动。


本节知识相当于该节知识的一个拓展,模拟生活中的重力系统,它可以为我们开发的游戏提供一个近乎逼真的重力模拟系统,也可以为我们游戏引擎开发中物理系统相关代码的书写提供一定的思路。



 重力模拟实现起来其实非常简单,我们都知道,重力的表现形式其实就是一个大小约等于9.8米每二次方秒,方向垂直地面指向地心的加速度。且由于X轴方向的速度不受重力影响,所以我们只要将物体的速度进行正交分解,处理竖直向下的Y轴方向即可。

 下面用本节的实例中的实现重力模拟的代码来具体说明,这一节着重讨论重力,所以演示时暂时先忽略下坠时的空气阻力与触地时的摩擦力。

这是一个平抛运动,小鸟将具有水平方向的初速度,且受到向下的重力,即小鸟具有向下的加速度,若碰到地面就会进行反弹,速度反向。

 



 首先我们定义下坠物体的初始坐标与初始速度,初始横坐标x=0,初始纵坐标y=100,初始水平方向速度vx=6,初始竖直方向速度vy=0,重力加速度gy=3(这里为了方便演示,我们设置为3)



 

然后我们在MyPaint()函数中实现具体的重力环境模拟:

 


 

基础部分就讲解完成了。



国际惯例,依旧是贴出注释详细的源代码:



该demo运行的截图如下:














依然,我们可以通过更改横坐标x,纵坐标y,水平速度vx,竖直速度vy以及加速度gy的值来改变小鸟的运动速度与运动轨迹。

 


这一节到这里就结束了。

应大家要求,从本节文章开始,以后浅墨提供的文章配套源码都将分为VC6.0和VS2010两个版本,以方便使用不同版本IDE的朋友们进行学习提高。当然,依旧是0资源分下载,分享精神至上~~~


 好了,下载地址就在下面:


本篇文章VC6.0版的源码请点击这里下载:  【VC6.0版】【Visual C++】Code_Note_20



本篇文章VS2010版的源码请点击这里下载:【VS2010版】【Visual C++】Code_Note_20

 

 

感谢一直支持【Visual C++】游戏开发笔记系列专栏的朋友们,也请大家继续关注我的专栏,我一有时间就会把自己的学习心得,觉得比较好的知识点写出来和大家一起分享。

精通游戏开发的路还很长很长,非常希望能和大家一起交流,共同学习,共同进步。

大家看过后觉得值得一看的话,可以顶一下这篇文章,你们的支持是我继续写下去的动力~

如果文章中有什么疏漏的地方,也请大家指正。也希望大家可以多留言来和我探讨编程相关的问题。

最后,谢谢你们一直的支持~~~

                                                 ——————————浅墨于2012年5月5日