Unity2D横版移动跳跃问题——关于一段跳与二段跳

Unity2D横版移动跳跃问题——关于一段跳与二段跳.1.初始条件:1.角色只绑定一个碰撞体,移动时施加力或给予速度,用跳跃次数JumpTimes或者bool值OnGround判断是否在地面。2.只用一个tilemap搭建2D场景,因此所有tilemap的图块都是同一个tag,用于判断是否落回地面。2.出现的问题:当角色跳起来接触左右墙壁时按住左右移动键,会出现卡墙现象,就是角色不会...
摘要由CSDN通过智能技术生成

Unity2D横版移动跳跃问题——关于一段跳与二段跳.

前提:了解2D移动,可参考我另一篇博文https://blog.csdn.net/weixin_42622658/article/details/93972575

1.初始条件:

1.角色只绑定一个碰撞体,移动时施加力或给予速度,用跳跃次数JumpTimes或者bool值OnGround判断是否在地面。

2.只用一个tilemap搭建2D场景,因此所有tilemap的图块都是同一个tag,用于判断是否落回地面。


2.出现的问题:

  1. 当角色跳起来接触左右墙壁时按住左右移动键,会出现卡墙现象,就是角色不会因为重力掉下来,而接触墙壁停止在半空(不符合客观规律)
  2. 不知道碰撞体是碰到墙壁还是地面或天花板,因为所有图块都是同一个tag,导致如果直接在OnCollisionEnter2D方法函数里通过判断碰撞体的tag是否为地面Ground,是就重置跳跃次数或者OnGround变为true(碰到墙也可以重置跳跃,导致可以不断卡墙无限跳)

3.解决方案

1.通过添加空子物体并给予trigger于角色上,来检测四个方向的碰撞,从而区分是哪边碰到

缺点:每个prefab都要重复相同的绑定,且如果角色为不规则图形,可能出现bug,例如:

如果角色快要从高处移动到要掉落时,刚好trigger没接触地,判断已经离开地面,

  • 7
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值