第十六章:物理引擎
牛顿的苹果 长久以来,哲学领域有一个争论不休的话题,就是这个世界有没有独立意志? 现在,你是游戏的开发者, 你正在创造一个世界。 这个世界有意志吗?游戏本身是没有意志的,但开发游戏的你有意志,将来玩这个游戏的人也有意志。你是这个游戏的主宰,可以让这个世界表现出更加接近现实世界的规律,或者只符合你定下的规则。无论如何,你需要一个规则来运转这个世界。我们用类和对象来抽象自己对世界的理解,并用代码逻辑来描述世界的规律,越是接近现实规律,程序就越是复杂。 ...
牛顿的苹果 长久以来,哲学领域有一个争论不休的话题,就是这个世界有没有独立意志? 现在,你是游戏的开发者, 你正在创造一个世界。 这个世界有意志吗?游戏本身是没有意志的,但开发游戏的你有意志,将来玩这个游戏的人也有意志。你是这个游戏的主宰,可以让这个世界表现出更加接近现实世界的规律,或者只符合你定下的规则。无论如何,你需要一个规则来运转这个世界。我们用类和对象来抽象自己对世界的理解,并用代码逻辑来描述世界的规律,越是接近现实规律,程序就越是复杂。 ...
碰撞与相交 碰撞检测这个词通常有两种含义,一种是物理意义上的碰撞检测,另一种是数学意义上的碰撞检测。本章讨论的是纯数学的碰撞检测,即判断物体之间是否相交(或包含、重合)、计算交点、预测相交时刻等。“物理引擎”则是在碰撞检测的基础上又增加了“物理”因素,模拟力与力之间的相互作用,这个内容将在下一章讨论。 显而易见,数学碰撞检测比物理碰撞检测的速度要快,而且消耗的内存也更少,因为压根就不用考虑质量、 ...
在jMonkeyEngine中,我们有3种实现特殊视觉效果的工具。 后期滤镜 FilterPostProcessor & Filter 场景处理器 SceneProcessor 粒子发射器 PraticleEmitter 后期滤镜 在游戏场景渲染完成后,我们可以使用滤镜(Filter)对画面进一步加工。在3D游戏中,下列效果通常都是用滤镜来实现的: 雾化(Fog) 马赛克( ...
这个端午节我没有继续写教程,而是捡起了一个被我暂停了的兴趣项目:洛奇口袋版。 之所以暂停这个项目,主要是因为开发过程中遇到了一些古怪的问题,无论我怎么调试,都搞不清楚错在哪里。 播放骨骼动画时,角色模型被肢解了。 我希望通过手动拖拽进度条来控制动画,但是我不知道该怎么实现。 模型的影子会突然消失。 角色模型的部件之间有裂缝。 人类/精灵的模型原点在肚脐处,不在脚底。这导致骨骼动画绑定异常。 经过几个月的学习之后,在这个端午节总算是解决了前2个问题,其他问题我也有信心解决了。 ...
导读:《入门:游戏主循环》 【转载】入门:游戏主循环 引言 主循环是一款游戏或者框架的核心以及基础,它会让游戏以及动画看起来是在做实时的运行。几乎所有游戏(除了回合制等几种类型以外)都要基于主循环以及精确的时间控制。 下面就是一个最基本的主循环示例代码: 先定义一个简单的游戏引擎接口,声明游戏的基本生命周期。 package net.jmecn.logic; /** * 一个简单的游戏引擎接口 ...