2017-02-09 5 views
0

Input.GetAxis()とAddForce()を使用してプレーヤーを移動しています。一時停止にTime.timeScaleを使用すると、一時停止していないときにプレーヤーが「ダッシュ」するようになりますが、どうすれば停止できますか?

Time.timeScale = 1fでゲームのポーズを解除すると、移動キーを押していない状態でも、プレーヤーはより高速に(速度制限を超えて)前方にダッシュします。

どうしたらいいですか?あなたは

void FixedUpdate() 
{   
    if(rigidbody.velocity.magnitude > maxSpeed){ 
     rigidbody.velocity = rigidbody.velocity.normalized * maxSpeed; 
    } 

} 

はまた、あなたがVector3.ClampMagnitudeを使用することができます「正規化」を使用することができ、最大制限を超え速度を制限するための

答えて

1

。 これを参照してくださいhttps://docs.unity3d.com/ScriptReference/Vector3.ClampMagnitude.html 具体的には、スクリプトの部分を共有することができます。

+1

問題を修正しました。私は、正規化された行のバージョンを持っていましたが、それはFixedUpdate()の代わりにUpdate()にありました。 – Frolicks

0

ゲームが一時停止している間、力のような音がまだ適用され、追加されています。

Time.timeScale = 0に設定する直前にプレーヤーに適用される力の量を記録し、Time.timeScale = 1fに設定すると、一時停止する前に記録された力に力を設定できます。

関連する問題