您当前所在位置: > 爆料站 > 游戏小抄

实现一个类似于FC时代简易的碰撞系统_物体

时间:2020-03-20 09:15:45  来源:  作者:网络

原标题:实现一个类似于 FC 时代简易的碰撞系统

今回 Lanza 将带来一些古老的游戏开发经验~

(最早的试验我想应该是这个) https://indienova.com/u/lanza/blogread/1863

注:本文章采用 Y 轴向下的屏幕直角坐标系

“3D”游戏

我们玩到一些游戏时,往往按照画面表现给出一种分类,讲它是 2D 或是 3D 的电子游戏。

实际上我们不仅可以从画面来分,更可以从游戏当中呈现给我们的活动范围来划分,比如经典的:FC《双截龙》系列。

"3D"游戏《双截龙》

我们可以发现,游戏对象有纵向移动、横向移动、还可以在高度轴上发生移动,

实际上,这往往已经可以说明它是一个 3D 游戏了。

物理的世界

我们知道现在有很多物理引擎—— 2D 的、3D 的都有,这些物理引擎能够制作出像《愤怒的小鸟》这样的具有典型的物理感、机关感的游戏。其实我们自己玩的时候会有一些"感觉"的,这些用专业物理引擎制作出的游戏物体运动和我们以前接触到的一些古典的游戏是有很大不同。这就是我们要去研究的点——在不使用专业物理引擎的情况下,怎么去避开这些麻烦的物理拟真,去做一个简单的、古典的具有运动物体和活动范围的空间呢?

物体

首先我们可以去设计一个物件,用它去表示物理世界内的一个可运动的物体。一般而言,在一开始设计物体时,你最先给出它的两个关键元素:坐标和速度。

如果你的编程环境中有基本的一些数学工具(比如 Vector3 这样的东西),做起来就会比较快,如果没有的话,可以自己简单地写一个——搬中学数学课本。

物体的坐标用于直接表示它在这个物理世界当中所处的位置,而速度则指示该物体将要如何去变化它的位置——你在游戏循环中需要不断根据速度来修正其位置,这样就实现了物体的运动。

当然,你还需要给物体施加一个重力( gravity ),让它无条件地产生某种速度变化。

# 可以先这样写一个简单的实现,之后我们再修改

defupdate

gravity =Vector3.new(0,0,-0.1)

self.speed +=gravity

self.position +=self.speed

end

这样的示例代码就表示了一个简单的物体每帧受到在 z 轴为 -0.1 个单位的重力的运动模拟的过程。

物体每帧受到 z 轴负向的重力就会产生自然下落,如果你要给物体一个 z 轴正向的速度,那么物体就会出现起跳~下坠,这样的一个很自然的过程。

纯 Z 轴移动

通常你绘制一个 2D 物体时,直接将物体的 x y 坐标拿来加上摄像机坐标就可以拿去直接绘制精灵了——在绘制 3D 物体时,你需要体现第三轴向的变化。

屏幕是一个二维空间,体现第三轴向的变化就需要借助 x y 这两个轴向才行,像是我举例的《双截龙》截图当中就是借助 y 轴体现 z 轴的变化的(跳跃只产生了 z 轴的变化,但是绘制时反映到了 y 轴上,你可以简单地认为 绘制坐标 = 角色 Y - 角色 Z )。

那么问题来了, y 轴和 z 轴在绘制上合并了,那么如果物体同时在 y 轴和 z 轴发生移动的话,就会造成玩家的困惑,比如下图:

Shari 在跳跃的同时还在上下移动

Shari 在跳跃的同时还进行了上下移动,这在战斗场景等需要玩家判断位置的场合是容易带来困扰的,那么怎么解决呢?也很简单,加个影子就可以了:

有阴影指示 Y 轴坐标

有一个可以指示物体 Y 轴位置、且大小和浓度受高度影响的阴影,就可以更快使人透过屏幕而辨识出物体在空间当中的位置。

古典的舞台是一个大台阶

刚才我们的示例当中已经做出了一个可以运动的物体,那么,现在我们需要给物体一个活动范围的限制,一般来说,也就是碰撞相关的内容了。

像我们上面的代码,给出一个 gravity ,然后让速度不断添加,坐标也不断变化……那么我们看到的就是一个物体无限地朝着 z 轴负方向掉了下去。

实际上这个过程我们是可以去施加一个限度的,你可以想象为设置一个"地板",物体的 z 坐标到了这个地板就到底了,不能再降低了。

defheight

return0

end

defupdate

gravity =Vector3.new(0,0,-0.1)

self.speed +=gravity

self.position +=self.speed

self.position.z =height ifself.position.z <height

end

以此代码为例,我们写了一个 height 方法来获取高度,这个高度我们先写死为 0 ——这样一来,物体的 z 坐标到 0 这个值就不会再降低了。

当然,这样的话世界就变成了一个超大的平地,因此我们可以做点变化……

defheight(x,y)

return32ifx >100

return0

end

defupdate

gravity =Vector3.new(0,0,-0.1)

self.speed +=gravity

self.position +=self.speed

self.position.z =height(self.position.x,self.position.y)ifself.position.z <height

end

这样修改的话,高度就不是一个固定的值,而是一个变化的函数:我们提供一个坐标,获取一个高度值,也即理解成:获取世界在某处的高度。

代码示例当中, x > 100 这片区域的高度是 32 ,而剩下区域的高度是 0 ,这样你就可以做一个实验:放置一个物体,坐标为 (180, 0, 64) ,

然后你就会观察到,它的 z 坐标会因为重力从 64 落到 32 后不再变化,这时你把它向左( x 轴的负向移动)直到其 x 坐标 < 100 ,它的 z 坐标又将继续下落到 0 了。

其实用这种方式构建的世界就像一个大台阶一样,是一个高度不断变化的空间。

用地图编辑器去制作高度标记

在实际的开发当中,你当然不需要去手写这种高度变化的表达式——你可以直接在地图编辑器当中划定某些区域的高度,然后在引擎里去解读。

限制移动

当前我们已经做到了物体运动以及舞台高度的变化,接下来的问题就是将上面的例子反过来——

我们把物体从高度较高的移动到一个高度较低的地方,那么它会继续下落,如果反之,我们将物体从高度低的地方向高度高的地方移动,那将会发生什么呢?

看上面的代码可以发现,如果物体从高度较低的地方移向高度较高的地方,那就将会直接让物体爬升——这是我们不希望看到的。

解决的方法也很简单,我们连续地做高度检测,先检测物体当前所处位置的地形高度,再检测一下物体移动后所处位置的地形高度,如果前者小于后者,说明物体面对了高度差,要"撞墙",那么就要阻止移动的发生。

当然你也可以放宽一点点,比如后者如果只比前者小一定的值(像是1~4像素),那么也允许爬升。这可以制作楼梯、爬坡等地形。

按照这个思路,可以拓展更多的内容——

按照这种思路构建的世界已经足以去制作一款古典风格的动作游戏了,当然你还需要解决更细致的问题:比如在高速运动下发生的穿透(需要用分 substep 解决)、不规则的碰撞检测等。

当然本文只是一种抛砖引玉的意图,如果大家有更多关于老式游戏中的想法,可以多分享和交流喔!

以这种思路构建的物理空间就足够制作类似于古典动作游戏当中的运动效果了 游戏网

相关下载

玩家评论

实现一个类似于FC时代简易的碰撞系统

今回 Lanza 将带来一些古老的游戏开发经验~ (最早的试验我想应该是这个) https://indienova.com/u/lanza/blogread/1863 注:本文章采用 Y 详情>>

阅读: 0
日期: 2020-03-20
运营模式和《英雄联盟》类似,《VALORANT》官方透露更多游戏细节

月初,博士和大家分享了文章《连线质量和反外挂技术拿来当卖点,拳头公开射击新作<VALORANT>》,讲述了Riot Games 正式公开了 FPS 新作《VALORANT》。游详情>>

阅读: 4
日期: 2020-03-08
PBE猴子改动:冲刺会指向目标 类似于盲僧Q

生命值:从 577.8 调到 540 法力值:从 265.84 调到 265 法力回复/5秒:从 8.042 调到 8.04 魔法抗性:从 32.1 调到 28 金刚不坏(被动):周围每个敌方英雄都会增加孙悟空[4/6详情>>

阅读: 6
日期: 2020-02-21
《死亡搁浅》引起直播热类似《死亡搁浅》的游戏盘点

已经于11月8日发售的《死亡搁浅》,掀起了一股直播热潮。这款游戏号称2019年最具争议的游戏了,媒体评分两极分化,满分与3分都有,也更加促进了玩家们的好详情>>

阅读: 16
日期: 2019-11-09
【舍长的网游梦】激战2 试玩

详情>>

阅读: 37
日期: 2019-09-05
《死亡搁浅》多人模式很棒类似于《蜘蛛侠平行宇宙》

原标题:《死亡搁浅》多人模式很棒 类似于《蜘蛛侠平行宇宙》 之前小岛秀夫在科隆展2019上,曾表示《死亡搁浅》将拥有多人功能。近日法国Youtuber详情>>

阅读: 14
日期: 2019-08-28
找几部类似于《寻龙诀》的好电影

Game234问答中心有网友提出了一个比较有代表性的问题【找几部类似于《寻龙诀》的好电影】,【找几部类似于《寻龙诀》的好电影】具体问题如下:找几部类似于《寻龙诀》的好电影电影内容不一定要类似,但是故事详情>>

阅读: 7
日期: 2019-04-19
求类似与如懿传的小说

Game234问答中心有网友提出了一个比较有代表性的问题【求类似与如懿传的小说】,小编觉得可能对其他网友也有帮助,所以将此问答整理出来了,希望对您有帮助。小编为您搜罗的答案1《皇后策》——谈天音《皇详情>>

阅读: 8
日期: 2019-04-18
有没有类似婵翼这样的电影

Game234问答中心有网友提出了一个比较有代表性的问题【有没有类似婵翼这样的电影】,小编觉得可能对其他网友也有帮助,所以将此问答整理出来了,希望对您有帮助。小编为您搜罗的答案1薄如蝉翼是一部国产悬疑详情>>

阅读: 2
日期: 2019-04-17
有没有类似神泣的游戏

Game234问答中心有网友提出了一个比较有代表性的问题【有没有类似神泣的游戏】,小编觉得可能对其他网友也有帮助,所以将此问答整理出来了,希望对您有帮助。小编为您搜罗的答案1魔兽和永恒之塔不说了(都收详情>>

阅读: 14
日期: 2019-04-17
有没有类似《诸神之战》的电影?

Game234问答中心有网友提出了一个比较有代表性的问题【有没有类似《诸神之战》的电影?】,小编觉得可能对其他网友也有帮助,所以将此问答整理出来了,希望对您有帮助。小编为您搜罗的答案1《波西杰克逊与神详情>>

阅读: 9
日期: 2019-04-16
找几篇类似诛仙类的小说

Game234问答中心有网友提出了一个比较有代表性的问题【找几篇类似诛仙类的小说】,【找几篇类似诛仙类的小说】具体问题如下:就是主角由弱到强的经历最好要男主角是玄幻奇幻武侠仙侠类型的小编详情>>

阅读: 11
日期: 2019-04-16
求玄幻耽美小说 类似《养龙》《仙魔劫》《艳鬼》这...

Game234问答中心有网友提出了一个比较有代表性的问题【求玄幻耽美小说类似《养龙》《仙魔劫》《艳鬼》这...】,小编觉得可能对其他网友也有帮助,所以将此问答整理出来了,希望对您有帮助。小编为您搜罗详情>>

阅读: 11
日期: 2019-04-16
谁可以介绍款类似仙魔ol的游戏给我啊

Game234问答中心有网友提出了一个比较有代表性的问题【谁可以介绍款类似仙魔ol的游戏给我啊】,【谁可以介绍款类似仙魔ol的游戏给我啊】具体问题如下:玄幻在那里下载啊各位大哥?小编觉得可能对其他网友详情>>

阅读: 5
日期: 2019-04-16
类似一起来捉妖的手游推荐

腾讯首款AR游戏一起来捉妖正式上线了,那么现在有没有跟它相似的游戏呢,这里小编为大家带来玩法差不多的手游,希望能帮助到各位。1、捉妖手机游戏简介:游戏如名,《捉妖手机》是一款让大家在现实世界中,用手机详情>>

阅读: 12
日期: 2019-04-15
战意有手机版吗?类似战意的有哪些?

Game234问答中心有网友提出了一个比较有代表性的问题【战意有手机版吗?类似战意的有哪些?】,【战意有手机版吗?类似战意的有哪些?】具体问题如下:如果没有出手机版,那什么时候出?小编觉得可能对其他网详情>>

阅读: 18
日期: 2019-04-15
类似于权御天下的歌,快的

Game234问答中心有网友提出了一个比较有代表性的问题【类似于权御天下的歌,快的】,小编觉得可能对其他网友也有帮助,所以将此问答整理出来了,希望对您有帮助。小编为您搜罗的答案1可以试试操戈天下,九九详情>>

阅读: 11
日期: 2019-04-15
有没有类似TERA的网络游戏

Game234问答中心有网友提出了一个比较有代表性的问题【有没有类似TERA的网络游戏】,【有没有类似TERA的网络游戏】具体问题如下:魔兽永恒那些的就不要说了有和永恒类似的也行废话的别来详情>>

阅读: 22
日期: 2019-04-14
有没有类似神魔大陆的游戏

Game234问答中心有网友提出了一个比较有代表性的问题【有没有类似神魔大陆的游戏】,【有没有类似神魔大陆的游戏】具体问题如下:有没有类似神魔大陆的游戏推荐点象神魔大陆神鬼传奇世界差不多的游戏免费的展详情>>

阅读: 17
日期: 2019-04-14
类似神魔大陆的游戏

Game234问答中心有网友提出了一个比较有代表性的问题【类似神魔大陆的游戏】,【类似神魔大陆的游戏】具体问题如下:类似神魔大陆的风格,配置不要太高,但是神魔大陆的商场太BT了,里面的道具变态不说还贵详情>>

阅读: 15
日期: 2019-04-14
有没有类似QQ自由幻想的游戏

Game234问答中心有网友提出了一个比较有代表性的问题【有没有类似QQ自由幻想的游戏】,【有没有类似QQ自由幻想的游戏】具体问题如下:那种刷试炼升级时不时刷出个精英怪的,2D或者2.5D,Q版或者半详情>>

阅读: 17
日期: 2019-04-14
类似QQ幻想的游戏有哪些

Game234问答中心有网友提出了一个比较有代表性的问题【类似QQ幻想的游戏有哪些】,【类似QQ幻想的游戏有哪些】具体问题如下:网页游戏。网游都行。。。只要不是回合制的都收。展开小编觉得可能对其他网友详情>>

阅读: 12
日期: 2019-04-13
炉石传说,还有没有类似 神奇的威兹班 卡牌

Game234问答中心有网友提出了一个比较有代表性的问题【炉石传说,还有没有类似神奇的威兹班卡牌】,【炉石传说,还有没有类似神奇的威兹班卡牌】具体问题如下:还有什么卡牌可以变英雄?展开小编觉得详情>>

阅读: 6
日期: 2019-04-13
求类似《第九大陆》那样的端游

Game234问答中心有网友提出了一个比较有代表性的问题【求类似《第九大陆》那样的端游】,【求类似《第九大陆》那样的端游】具体问题如下:近两年有没有什么新出的端游,玩法跟《第九大陆》《龙之谷》差不多的详情>>

阅读: 6
日期: 2019-04-13
求类似龙之界点的动漫

Game234问答中心有网友提出了一个比较有代表性的问题【求类似龙之界点的动漫】,小编觉得可能对其他网友也有帮助,所以将此问答整理出来了,希望对您有帮助。小编为您搜罗的答案1你这让人情何以堪,已经看了详情>>

阅读: 14
日期: 2019-04-13
类似不死不灭的成魔小说

Game234问答中心有网友提出了一个比较有代表性的问题【类似不死不灭的成魔小说】,小编觉得可能对其他网友也有帮助,所以将此问答整理出来了,希望对您有帮助。小编为您搜罗的答案1强力推荐耳根的《求魔》求详情>>

阅读: 9
日期: 2019-04-13
有类似超级兵王的小说么

Game234问答中心有网友提出了一个比较有代表性的问题【有类似超级兵王的小说么】,小编觉得可能对其他网友也有帮助,所以将此问答整理出来了,希望对您有帮助。小编为您搜罗的答案1君罪--《丧尸帝君》末详情>>

阅读: 16
日期: 2019-04-13
有没有类似无赦系列的小说

Game234问答中心有网友提出了一个比较有代表性的问题【有没有类似无赦系列的小说】,小编觉得可能对其他网友也有帮助,所以将此问答整理出来了,希望对您有帮助。小编为您搜罗的答案1补充无赦的小说:柏,与详情>>

阅读: 9
日期: 2019-04-12
Epic商城将不会加入类似Steam的社区论坛和集换式卡牌功能!

  Epic游戏商城去年年底才上线,许多功能还不完善。不久前官方公布了它的更新发展计划,搜索、预载、玩家评论、愿望单、游玩时长统计、mod支持、云存档等详情>>

阅读: 5
日期: 2019-04-12
什么游戏类似APEX-类似APEX的手游合集

什么游戏类似APEX?Game234游戏门户类似APEX的手游合集为大家带来了多款在玩法上类似于apex的手游,最近apex是非常火爆的射击游戏,很多小伙伴想在手机上也玩,那么下面就来看看小编带来的a详情>>

阅读: 20
日期: 2019-04-08
类似MC的手游有哪些_好玩的类似MC的手游盘点

我的世界用它最简单的玩法和无限的创造性赢得了一众玩家的喜爱,很多玩家都想玩到更多类似我的世界的手游,下面Game234游戏门户小编就为大家盘点一些。TOP1:饥荒手游安卓版(动作冒险类游戏,游戏评分:详情>>

阅读: 5
日期: 2019-04-04
类似剑网3的手游合集_类似剑网3的手游大全

仙侠世界情劫未了,玩家们是否还有一丝冲动想去玩别的仙侠手游呢,本期带给玩家们的是一些类似剑网3的手游,希望玩家们在新的仙侠世界中创出一片天地,快来下载吧。TOP1:仙剑诛仙(角色扮演类游戏)推荐理由:详情>>

阅读: 1
日期: 2019-04-04
类似blued的同志软件2019

同性交友一直都有很大的需求,尤其是现在手机互联网发达了,延伸出了很多独特的APP,这里小编就为大家带来类似的软件,可以来看看有哪些哦。1、zank软件简介:在移动端交友必须要用这款软件,为大家呈现可信详情>>

阅读: 89
日期: 2019-04-02
类似QQ炫舞的手游有哪些_好玩的类似QQ炫舞的手游盘点

QQ炫舞和劲舞团可以说是许多玩家少年时最印象深刻的时尚炫酷游戏了,很多玩家都想玩到更多同类的手游,下面Game234游戏门户小编为大家盘点一些。TOP1:萌舞OL(音乐舞蹈类游戏,游戏评分:7.9分详情>>

阅读: 3
日期: 2019-03-26
类似我的世界的手游有哪些_好玩的类似我的世界的手游盘点

我的世界可以说把像素和方块两种游戏元素玩到了极致,让玩家真正感受到了沙盒与创造的快乐,下面Game234游戏门户小编就为大家盘点一下类似的手游。TOP1:饥荒手游安卓版(动作冒险类游戏,游戏评分:8.详情>>

阅读: 3
日期: 2019-03-25
类似MC的手游有哪些_好玩的类似MC的手游盘点

我的世界用它最简单的玩法和无限的创造性赢得了一众玩家的喜爱,很多玩家都想玩到更多类似我的世界的手游,下面Game234游戏门户小编就为大家盘点一些。TOP1:饥荒手游安卓版(动作冒险类游戏,游戏评分:详情>>

阅读: 0
日期: 2019-03-25
精彩推荐