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

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没接触地,判断已经离开地面,

你可能感兴趣的:(Unity,Unity,横板,2D,跳跃)