0

我已经知道如何根据鼠标位置旋转播放器,有大量关于此的教程。然而,每次我需要移动相机(通常使用电影机)时,我都会感到极度紧张,玩家面对鼠标的方式也会发生变化。这是我现在使用的代码,但这是我长期以来一直遇到的问题,似乎找不到任何人询问它。

我正在使用新的输入系统,但如果需要,我可以使用旧的输入系统并在 Cinemachine 中使用 2D 摄像机

        float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
        if(angle != 0)
        {
            savedAngle = angle;
        }
        transform.rotation = Quaternion.Euler(0, 0, savedAngle); 
4

1 回答 1

0

您可以尝试使用 Mathf.SmoothDamp() 来确保角度不会一次改变太多。

https://docs.unity3d.com/ScriptReference/Mathf.SmoothDamp.html

像这样(假设这段代码在Update()//FixedUpdate()LateUpdate()运行):

// class member variables
[SerializeField] private float _smoothTime = 0.3f;
private float _velocity = 0.0f;
...
...
float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
if(angle != 0)
{
    savedAngle = Mathf.SmoothDamp(savedAngle, angle, ref _velocity, _smoothTime);
}
transform.rotation = Quaternion.Euler(0, 0, savedAngle);
于 2021-06-24T16:44:55.547 回答