【第124期】好手感,让你在游戏开发团队里无可取代

我是酱油,这是第124期文章

有位程序同事是游戏达人,对手感很在意,容不得一点延迟。工作里,经他负责的玩法,都会把手感调到极佳,并乐此不彼地向旁人展示他的成果:看!是不是操作起来很爽?

很多策划与这位程序小哥配合后,都对他赞赏有加。不禁感慨:会写代码的程序员多,能写得好的人少,而写得一手好代码,又追求手感的程序员,少之又少,简直是团队珍宝。

在我们的认知里,策划才是游戏主导,对用户体验更上心。可为什么这种事情发生在程序员身上,而不是策划身上呢?

经过这次游戏制作后发现:手感这事不仅是设计问题,还是技术上的问题。

作为策划,肯定希望手感好,但能好到什么程度,就取决于程序的技术了。所以行业里才有这说法:没有程序美术,策划啥都不是。

今天是制作游戏的第5天,主要优化手感。

在之前的游戏里,控制小狐狸起跳环节是有瑕疵的,有时候点击跳跃键,小狐狸并没有跳跃,所以准确地说,这已经是bug了。

但为什么会有这个bug呢?

UP主在研究后,跟大伙分享了其中的缘由,此处省略几千字,因为看完还是懵,所以自己也查了一些资料,做了通俗的注释。

原来在Unity里,用来检测按下跳跃键的代码Input.GetButtonDown,最好在Update里调用,而不是在FixedUpdate里调用。

所以通常做法是:在Update里检测玩家是否按下跳跃键(发送跳跃命令),在FixedUpdate里接收命令后就控制角色起跳。

但Update在刷新时会重置,而FixedUpdate又是每0.02秒执行一次,万一Update发送出去的消息刚好落在FixedUpdate的执行间隔里,角色没起跳,然后Update刷新后又重置了(即便此时仍然按着跳跃键,也不会再次发送跳跃命令),就导致角色有小概率没跳起来。

那怎么办呢?

新增一个参数(默认为0),当Update检测玩家按下跳跃键时,就把这个参数设置为1。在FixedUpdate里,如果发现这个参数为1就起跳,起跳后恢复为0。这样就保证了按下跳跃键,角色必然起跳,会有延迟吗?理论上有,最多延迟0.02秒,但体验时感受不出来。

这样问题就圆满解决了,终于实现了控制角色跳跃时,能做到点击即起跳。

今天分享到这儿,大家有遇到什么问题吗?欢迎给我留言,一起来吐槽制作游戏这个大工程。

附:今日份的视频教程

https://www.bilibili.com/video/av82865782/
Michael是我很喜欢的一位UP主,他的视频很适合零基础的小伙伴,闲暇时动手学学。这系列的文章不是教大家怎么做游戏,而是陪伴大家一起学做游戏。Michael是老师,我跟大伙都是学生,同学之间可以相互嘚瑟吹逼吐槽,一起搀扶着学习,可以走得更远。
(0)

相关推荐