[英]How Can I smooth out the Values of Mouse X in Unity
我正在尝试创建一个脚本,使凸轮在 Z 轴动态上倾斜,这样当您向右看时,相机会像被拉动一样向侧面倾斜,但不知何故,我的凸轮只是抖动,我知道为什么,但我不知道怎么做修复命中。 原因是鼠标 X 轴的值。 当我打印出来时,我可以看到它的第二个值是 0,而其他的值是真实值,所以我的相机从 0 捕捉到我想要的旋转。
最新版本 Function 中的第一部分仅用于凸轮的第一人称控制
public float MausEmpfindlichkeit;
float CamTilt;
//transform
public Transform PlayerBody;
//floats
float Xrot = 0f;
//Scripte
public RotaionSpeed PlayerSpeed;
// Start is called before the first frame update
void Start()
{
Cursor.lockState = CursorLockMode.Locked;
}
// Update is called once per frame
void LateUpdate()
{
TurnCamToSpeed();
float MausX = Input.GetAxis("Mouse X") * Time.deltaTime * MausEmpfindlichkeit;
float MausY = Input.GetAxis("Mouse Y") * Time.deltaTime * MausEmpfindlichkeit;
Xrot -= MausY;
transform.localRotation = Quaternion.Euler(Xrot, 0f, CamTilt);
PlayerBody.Rotate(Vector3.up * MausX);
print(Input.GetAxis("Mouse X"));
}
void TurnCamToSpeed()
{
float CamTiltValaue = Random.Range(0, Input.GetAxis("Mouse X"));
CamTilt = -CamTiltValaue * 3;
}
我的问题是,如何防止这种情况发生并获得鼠标 X 轴的平滑值
一般来说,与GetAxis
相反, GetAxisRaw
已经被平滑了一点。
但不是硬设置
CamTilt = -CamTiltValaue * 3;
您可以使用Mathf.Lerp
添加更多平滑,例如
CamTilt = Mathf.Lerp(CamTilt, -CamTiltValaue * 3, someFactor * Time.deltaTime);
其中someFactor
乘以Time.deltaTime
应该介于0
和1
之间,因此您必须使用它。
不过请注意,这可能会导致某些东西几乎没有移动,因为您每帧都选择了一个新值,这可能最终或多或少地固定在中间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.