微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用电影机和输入系统通过移动相机将玩家旋转到鼠标位置?统一 2D

如何解决如何使用电影机和输入系统通过移动相机将玩家旋转到鼠标位置?统一 2D

我已经知道如何根据鼠标位置旋转播放器,关于这方面的教程有很多。 然而,每次我需要相机移动(通常使用电影机)时,我都会有一个超级抖动的运动,玩家面对鼠标的方式也会发生变化。这是我现在使用的代码,但是这个这个问题我已经困扰了很长时间,似乎找不到任何人来询问。

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

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

解决方法

您可以尝试使用 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,savedAngle);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。