任何四元数天才能告诉我我的代码有什么问题吗?我有这个PlayerRotation脚本,它有两个功能:
旋转玩家的Y轴本地化
将玩家与表面法线对齐
PlayerMovement只会使玩家朝着transform.forward轴前进。问题在于,当我开始玩并走在一些倒置的表面上时,玩家的Y轴会随机偏移摇杆,比如把摇杆向前推会让玩家稍微向右旋转。
PlayerMovement只会使玩家朝着transform.forward轴前进。问题在于,当我开始玩并走在一些倒置的表面上时,玩家的Y轴会随机偏移摇杆,比如把摇杆向前推会让玩家稍微向右旋转。
input = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
Vector2 inputDir = input.normalized;
//Angle part
if (inputDir != Vector2.zero)
{
targetAngle = Mathf.Atan2(input.x, input.y) * Mathf.Rad2Deg + cam.eulerAngles.y;
Quaternion localRotation = Quaternion.Euler(0f, targetAngle - lastTargetAngle, 0f);
transform.rotation = transform.rotation * localRotation;
lastTargetAngle = targetAngle;
}
//Raycast part
if (Physics.Raycast(transform.position - transform.up * start, -transform.up, out hit, end))
{
Quaternion targetRotation = Quaternion.FromToRotation(transform.up, hit.normal);
transform.rotation = targetRotation * transform.rotation;
}
通过多次调整,我得出结论,问题似乎来自于射线投射部分,但我不明白为什么。