【发布时间】:2019-05-12 18:25:24
【问题描述】:
任何四元数天才可以告诉我我的代码有什么问题吗?我有这个 PlayerRotation 脚本,它做了两件事:
局部旋转玩家的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;
}
经过多次调整后得出的结论是问题似乎来自光线投射部分,但我不明白为什么
【问题讨论】:
标签: c# visual-studio unity3d