Unity3D中如何基于鼠标水平移动实现玩家对象Y轴旋转?
实现鼠标水平控制玩家绕Y轴旋转(无上下视角)
核心思路
只读取鼠标的水平(X轴)移动输入,将输入值转化为玩家对象绕Y轴的旋转角度,完全忽略鼠标垂直(Y轴)输入,以此模拟Minecraft的水平转向效果。
Unity C# 实现代码
创建一个脚本(比如命名为PlayerHorizontalRotation),挂载到玩家对象上:
using UnityEngine; public class PlayerHorizontalRotation : MonoBehaviour { // 鼠标灵敏度,可在Inspector中调整 public float mouseSensitivity = 100f; void Start() { // 锁定鼠标到屏幕中心并隐藏光标,提升操作体验 Cursor.lockState = CursorLockMode.Locked; } void Update() { // 获取鼠标X轴的移动增量 float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime; // 绕Y轴旋转玩家:使用Rotate方法直接修改局部旋转的Y轴 transform.Rotate(Vector3.up * mouseX); // 或者手动计算欧拉角(效果一致,适合需要更精细控制的场景) // Vector3 currentRotation = transform.localEulerAngles; // currentRotation.y += mouseX; // transform.localEulerAngles = currentRotation; } }
关键注意事项
- 锁定鼠标:
Cursor.lockState = CursorLockMode.Locked能避免鼠标移出游戏窗口导致操作中断,退出游戏时记得恢复光标状态(可在OnApplicationQuit或暂停菜单中处理)。 - 灵敏度调整:根据游戏手感在Inspector中修改
mouseSensitivity的值,数值越大转向越灵敏。 - 相机跟随:如果有第三人称或第一人称相机,让相机作为玩家对象的子物体即可,无需额外处理相机旋转,相机会自动跟随玩家的Y轴转向。
内容的提问来源于stack exchange,提问作者Ninju4821
相关产品推荐
相关产品推荐

