在方形平台上走来走去 Unity2D

问题描述

我正在尝试制作一个围绕平台行走的角色,如果角色到达某个角落,它会旋转并继续在平台的一侧行走,与底部相同。

这是我要达到的目标的直观表示。 Movement

具体问题是,当角色到达角落时,旋转会变得疯狂。我正在使用从角色到平台的光线投射来实现此目的,如果光线投射找不到地板,我会像这样开始旋转:

times++;
 transform.rotation = Quaternion.Slerp(transform.rotation,Quaternion.AngleAxis(times*-89.9f,Vector3.forward),Time.deltaTime * RotationSpeed);
 _characterGravity.SetGravityAngle(transform.localEulerAngles.z);

我正在使用characterGravity脚本,该脚本允许我更改角色的重力方向,以便在上下颠倒或侧面行走时不会掉落。但这不能正常工作。有更好的方法吗?

解决方法

假设您的2D视图在XY平面上对齐,并且Z轴对准屏幕(相机所面对的方向),我建议使用2而不是尝试线性插值之间的旋转两个值:

  if (ShouldRotateAroundCorner()) {
    transform.Rotate(Vector3.forward,RotationSpeed * Time.deltaTime);
  }

您只需确保您的ShouldRotateAroundCorner()知道何时开始和停止90度转弯,这将需要一些额外的代码来跟踪何时处于这种状态变化。