自己的引擎 - 09 游戏里时间概念的实现
摘要
为了模拟真实存在的世界,我决定给游戏加入时间概念。也就是 日升日落 季节更替。这样做可以实现很多有趣的玩法,比如给一队生物加上日出
为了模拟真实存在的世界,我决定给游戏加入时间概念。
也就是 日升日落 季节更替。
这样做可以实现很多有趣的玩法,
比如给一队生物加上日出而做日落而息的活动规则。
比如某个时间点 某些生物 会同某些生物遭遇 展开殊死战斗。
想实现这样的生态系统,必须先实现游戏里的时间概念。
首先我们能先设置时间段

时段 可以是24小时 也可以是 8小时。
所谓小时,可以是60分钟,也可以是任意分钟。
这样就可以灵活的实现各种星球时区定义了。

一个时间段的
第一项就是 多少分钟
第二三项是是 太阳位置XY
第四项是 最暗 第五项是 最亮 都是因素。
之后我们来让实体的影子可以响应当前太阳所在位置。

设置好了的效果

这样我们就能模拟一天的时间表现了,天黑天亮。

效果基本满意。

那么天黑得时候 手电照射的投影是如何实现的呢?
以前讲过,普通投影是用精灵图像剪影做旋转实现的。
但是黑天后的光光照投影就很复杂了。
先解决背光问题,也就是照射上亮一些!

之后是逆光的表现。

之后是建筑内部 光遮挡表现。

之后是 光投影的动态表现。

再就是多光源的混合效果

之后是各种实体的光影互动


最后就是 多光源的 投影表现。
这个有些复杂。比如有三个光源位置不同照射着同一个实体。
那么实体就要有三个投影。
我的实现方式是,在画面最上层绘制获取的 当前实体精灵剪影根据多组光分别绘制影子
(扣掉实体表现区域只留影子)最后渲染在所有图像的最上层!
简单点说 根据光圈区域的实体去绘制所有投影 并且扣掉实体精灵图像。得到的阴影图像绘制在屏幕最上层。

我只是去模仿了光源的表现。并不完美,我会慢慢完善的。
下次聊聊实体联动的实现,及应用 火的物理表现。

请多多支持关注哈~~
来源:互联网
本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。