【2D游戏制作笔记】如何做出较好的角色操作手感

文章讨论了游戏开发中角色与地面碰撞检测的问题,包括通过CompositeCollider2D和Rigidbody2D设置减少穿模现象。另外,提到了角色在操作过程中消失的解决方法,避免设置transform.localScale.x为0。最后,探讨了墙上控制的实现,如蹬墙跳和贴墙冲刺,建议使用计时器来管理贴墙状态和相关操作的时间窗口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下内容是对自己制作过程中遇到问题的记录,不一定科学准确。

1.地面与角色的碰撞检测

当人物下落速度较大时,有时会出现人物穿过地面或嵌入到地面中的情况。

当使用Tilemap制作地面时:

  • 为其添加Composite Collider2D组件
  • 将上述组件中的Geometry Type选为Polygons
  • 将Tilemap Collider2D中的Used By Composite勾选

按上述方法操作之后,原本空心的地面就成为了实心,可以一定程度上减少上述问题的发生。
请添加图片描述
对于人物,如果使用到了Rigidbody 2D组件:
可以将Rigidbody 2D组件中的Collision Detection选为Continuous
同时将Sleeping Mode选为Never Sleep
请添加图片描述

按上述方法操作之后,可以增加检测频率,可以在一定程度上减少速度太快导致没有检测到的情况。

2.操作过程中人物消失不见

如果人物图像反转使用修改transform.localScale来实现,要避免人物控制的代码中出现将transform.localScale.x置为0的情况。

不小心将transform.localScale.x置为0将会出现人物掉出地面的情况:
请添加图片描述

3.墙上控制

可以通过碰撞体或射线(我所了解的)来检测角色一侧与墙面是否接触。

以碰撞体为例,当处于空中的某个状态并检测到角色接触到墙面时,角色将吸附到墙上:

请添加图片描述
如果有如下需求:

  • 从贴墙状态解除
  • 蹬墙跳(与墙相反的方向)
  • 贴墙跳(与墙相同的方向)
  • 蹬墙冲刺(与墙面相反的方向冲刺)

以上操作看似简单,但我在实际制作时会遇到一些问题,如何协调”从贴墙状态解除“与下面几个操作的关系我是认为比较重要的。既然已经从贴墙状态解除了那么就不再是从贴墙状态向其他状态的转换了,自然很难做出丝滑精准的操作。

以蹬墙跳为例:
贴在左墙时,按下右方向键和跳跃键将会触发蹬墙跳跃,向与墙面相反的方向进行斜上跳跃
一般情况下,贴在左墙按下右方向键将会解除贴墙状态,如果贴墙状态下可以刷新二段跳跃,在解除贴墙后再跳跃则只能进行一次跳跃,这不是我所希望的。
在这里插入图片描述
同时还有贴墙跃,在进行这些操作时我不希望刚进入跳跃状态就立刻又转为贴墙状态,而是希望能够贴着墙面逐步向上攀跳。
在这里插入图片描述
对于贴墙反向冲刺,在进行操作时希望从贴墙状态直接转到冲刺状态而非解除贴墙后在空中冲刺。
在这里插入图片描述
为了同时解决以上问题,我所想到的一个简单解决办法是在进入贴墙状态时开启一个计时器,按下与墙面相反的方向键时计时器将会减少,否则更新,当计时器减为0时将解除贴墙状态,而计时器时间就是一个操作空间,在这个时间内是仍处于贴墙状态的。

这里计时器时间长短的设置是关键(比如0.25s):

  • 计时器时间太长,玩家迟迟不能解除贴墙状态,可能会影响操作
  • 计时器时间太短,玩家进行墙上操作的空间太小,可能使用不出相关操作
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼树C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值