void Update () {
RaycastHit hit;
Vector3 point_dir = transform.TransformDirection(Vector3.down);
if(Physics.Raycast(transform.position,point_dir,out hit,1000f,LayerMask.GetMask("Ground")))
{
Quaternion nextRot = Quaternion.LookRotation(Vector3.Cross(hit.normal,Vector3.Cross(transform.forward,hit.normal)),hit.normal);
transform.rotation = Quaternion.Lerp(transform.rotation,nextRot,0.1f);
}
}
由人物的脚下发射射线,检测地面所在的层级,将人物的旋转置为垂直地面后的旋转