我正在使用玩家位置和光标位置的点积,然后使用该值的余符号来适当地旋转玩家,但是出现故障并且表现得非常奇怪,似乎随机地从负数切换到正数,而且我似乎无法修复它。
camRotation = Mathf.Cos(player.transform.rotation.x + player.transform.rotation.y * Input.mousePosition.x + Input.mousePosition.y); player.transform.rotation = Quaternion.Lerp(Quaternion.Euler(0, 0, player.transform.rotation.z), Quaternion.Euler(0, 0, camRotation * 100), 1 * Time.deltaTime);
从你的问题中我可以看出,你正试图根据当前鼠标位置旋转播放器。但是,您的方法有几个问题:
Quaternion.Slerp
而不是 Quaternion.Lerp
,因为 lerp 只是对每个字段进行插值,几乎从来不是您要查找的内容。 Quaternion.Slerp 像旋转球体一样移动Quaternion.Euler
需要一个角度,所以只需使用鼠标位置作为角度就可以达到预期的效果这可能是您要找的:
camRotation = Input.mousePosition.x;
player.transform.rotation = Quaternion.Slerp(Quaternion.Euler(0, player.transform.rotation.y, 0), Quaternion.Euler(0, camRotation * 5, 0), 1 * Time.deltaTime);
如果我误解了请评论:)