AボタンとDボタンで回すハンドルがあります。私は負と正の角度でそれを固定しました。角度がゼロではなく、何も押していないときに、ホイールを元の回転に戻すコードもあります。ホイールがクランプ角度に近づくと回転を遅くするコードもあります。
ホイールが元の位置に戻るコードは次のとおりです。A と D を同時に押すと、ホイールが負の角度で動かなくなるバグがあるため、rotateBack の値は半分の量です。
if (Input.GetAxis("Horizontal") <1 && Input.GetKey(KeyCode.D) == false && !(angle < 1))
{
angle += rotateBack * Time.deltaTime;
if (angle > 0 )
{
rotateBack = -600f;
}
}
if (Input.GetAxis("Horizontal") < 0 && Input.GetKey(KeyCode.A) == false && !(negativeangle < 1))
{
angle += rotateBack * Time.deltaTime;
if (negativeangle > 0)
{
rotateBack = 300;
}
バグの(悪い)修正は次のとおりです。
if(Input.GetKey(KeyCode.A) == false&& Input.GetKey(KeyCode.D) == false && negativeangle > 5)
{
angle += rotateBack * Time.deltaTime;
rotateBack = 300f;
}
角度が正である右への回転は、正常に機能します。しかし、左に曲がると、クランプ角度に近づくとホイールは減速を無視し、ホイールを最大に回転させると、ホイールが揺れて安定しません。クランプ角度を超えています。持っている PC の性能が低いほど、揺れが大きくなり、バランスが崩れることに気付きました。
これが私のクランプコードです。負の角度がありますが、なぜか機能しません。
angle = Mathf.Clamp(-120, angle, 120);
angle = Mathf.Clamp(120, -120, angle);
wheel.transform.localRotation = Quaternion.AngleAxis(angle, Vector3.forward);
そして、クランプ角度に近づいたときにホイールが減速したときのコードは次のとおりです。負の角度では機能しません。
if (angle < 100||negativeangle>100)
{
angle += Input.GetAxis("Horizontal") * Time.deltaTime * 500;
}
if (angle>80||negativeangle>80)
{
angle += Input.GetAxis("Horizontal") * Time.deltaTime * 5;
}
if (angle > 100||negativeangle > 100)
{
angle += Input.GetAxis("Horizontal") * Time.deltaTime * 1;
}
角度を正の角度として読み取られる負の角度に変更して、これを修正しようとしましたが、問題は解決しません。
if (angle < 0)
{
negativeangle = -angle;
}
固定角度を超えてホイールが揺れて、左側の特定の角度を超えるとホイールが減速するようにするにはどうすればよいですか? これらのことを除いて、他のすべてはホイールで機能します。