WheelCollider部分可以看回之前的纹章 WheelCollider笔记
模拟摩托车使用2轮的时候摩托车容易侧翻,所以使用靠近的4轮来模拟摩托
预制如下:
摩托的侧翻会受WheelCollider 影响,WheelCollider越靠近越明显
同步轮子时候,摩托车头也跟随前轮的Y轴偏转。前后轮去前后的wheelCollider中间位置进行定位
可以大致模拟出一个摩托
轮子跟随的部分代码:
protected override void ModelFollowCollider()
{
//wheel x rotate with Wheel Collider
for (int i = 0; i < wheelColliders.Length / 2; i++)
{
Vector3 leftPos;
Vector3 rightPos;
Quaternion leftQuat;
Quaternion rightQuat;
wheelColliders[i * 2].GetWorldPose(out leftPos, out leftQuat);
wheelColliders[i * 2 + 1].GetWorldPose(out rightPos, out rightQuat);
Vector3 euler = wheelTransform[i].transform.localEulerAngles;
euler.x = (leftQuat.eulerAngles.x + rightQuat.eulerAngles.x) / 2;
wheelTransform[i].transform.localEulerAngles = euler;
}
Vector3 carEuler = this.transform.eulerAngles;
float yCarAngle = carEuler.y;
float motoSideMax = 45;
if (yCarAngle > motoSideMax) yCarAngle = motoSideMax;
if (yCarAngle < -motoSideMax) yCarAngle = -motoSideMax;
Vector3 headEuler = motoHead.transform.localEulerAngles;
headEuler.y = yCarAngle;
motoHead.transform.localEulerAngles = headEuler;
}