Unity+C#:如何解决鼠标指向玩家时角色弯腰的问题
解决玩家因鼠标位置导致弯腰的问题
我正在编写玩家移动脚本,以实现玩家全方向行走及自转功能,但当鼠标指针指向玩家头部或上方时,玩家会向下弯腰,效果如下:

当前使用的C#脚本如下:
public float moveSpeed = 6; Rigidbody rigidbody; Camera viewCamera; Vector3 velocity; void Start() { rigidbody = GetComponent<Rigidbody>(); viewCamera = Camera.main; } void Update() { Vector3 mousePos = viewCamera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, viewCamera.transform.position.y)); transform.LookAt(mousePos + Vector3.up * transform.position.y); velocity = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")).normalized * moveSpeed; } void FixedUpdate() { rigidbody.MovePosition(rigidbody.position + velocity * Time.fixedDeltaTime); }
问题原因
问题出在transform.LookAt()的目标点计算错误,导致玩家不仅绕Y轴水平旋转,还会产生X轴的上下旋转(弯腰动作)。原代码中给鼠标位置叠加了Vector3.up * transform.position.y,使得目标点的Y轴位置异常,迫使玩家头部朝向该点,出现弯腰。
解决方案
需要确保玩家仅在水平面上(绕Y轴)旋转,忽略鼠标的垂直位置影响,有两种实现方式:
方式一:修正目标点Y轴高度
将鼠标转换后的世界坐标Y轴强制与玩家自身Y轴保持一致,让LookAt()只触发水平旋转:
void Update() { // 将鼠标位置转换到世界空间,保持Y轴与玩家一致 Vector3 mouseWorldPos = viewCamera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, viewCamera.transform.position.y)); mouseWorldPos.y = transform.position.y; // 强制目标点与玩家同高度 transform.LookAt(mouseWorldPos); velocity = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")).normalized * moveSpeed; }
方式二:手动计算水平旋转方向
通过计算玩家与鼠标点的水平方向向量,直接设置旋转角度,完全避免上下旋转:
void Update() { Vector3 mouseWorldPos = viewCamera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, viewCamera.transform.position.y)); // 提取水平方向向量,忽略Y轴差异 Vector3 lookDirection = new Vector3(mouseWorldPos.x - transform.position.x, 0, mouseWorldPos.z - transform.position.z).normalized; if (lookDirection != Vector3.zero) { // 仅绕Y轴设置旋转 transform.rotation = Quaternion.LookRotation(lookDirection); } velocity = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical")).normalized * moveSpeed; }
两种方式都能解决玩家弯腰的问题,确保玩家只根据鼠标的水平位置进行自转,不产生上下方向的躯体旋转。
内容的提问来源于stack exchange,提问作者user15365798
相关产品推荐
相关产品推荐

