我遇到了问题。为了重现问题,我创建了一个极简的例子。

https://code.7imezones.com/vhalragnarok/UnityCameraMouseIssues

( Unity 6.3 LTS)。

我的角色无法正确地向向鼠标拧转。

我在使用新的输入系统,并将 PlayerInput 设计为一个C#类,通过该类捕捉输入事件。

我正在使用 Character Controller。

Ray ray = Camera.main.ScreenPointToRay(_aimDirection);

if (!Physics.Raycast(ray, out var hitInfo, Mathf.Infinity, _aimLayerMask)) return;

Vector3 lookDirection = (hitInfo.point - transform.position).normalized;

lookDirection.y = 0f;

transform.forward = lookDirection;

上述代码位于Update loop中。然而,hitInfo.point的值却不对。我是在Update中使用鼠标位置。

一个问题是,我在使用Cinemachine。我的跟随摄像机(World Space)和旋转组合器(Rotation Composer)。

_aimLayerMask是以序列化方式输出的,_aimDirection来自OnAim(InputCallback值)事件处理器的。ReadValue().