2016-09-27 11 views
0

私は以下の単純なシーンを持っています:床の場合は(0、0、0)、(0、2、0)の場合は1サイズのボックス。私は、単純な重力と使用次のコードを実行しよう:CharacterControllerのIsGroundedは安定していません

private float gravity = 1.0f; 
private Vector3 moveVector; 

void Update() 
{ 
    if (characterController.IsGrounded) 
    { 
     Debug.Log("is grounded"); 
     verticalVelocity = 0; 
    } 
    else 
    { 
     Debug.Log("not grounded"); 
     verticalVelocity -= gravity; 
    } 

    Debug.Log("vertical velocity:" + verticalVelocity); 

    moveVector.x = 0; 
    moveVector.y = verticalVelocity; 
    moveVector.z = 0; 

    characterController.Move(moveVector * Time.deltaTime); 
} 

オブジェクトが、私は/接地されていないメッセージを接地している床の上にあるときに、私はそのイベントログに表示されます。視覚的に物体が床にあり、振動していない。 オブジェクトが床にあるとき、なぜ私は定数を持たないのですか? おそらくそれはCharacterControllerの仕組みですが、ドキュメントではそれについて何も見つかりません。文字のコントローラは

接地されているとき

+0

ではverticalVelocity = 0;

を交換してくださいセット? –

+0

@このプロパティはUnityエンジンによって制御されます。私はそれを設定しません。 –

答えて

0

は同じ問題

はいくつかの重力を持っていた私たちは `characterController.IsGrounded`があるコードを見ることができ verticalVelocity = -gravity * Time.deltaTime;

+0

残念ながらまだここに問題があります:isGroundedはtrueとfalseを生成します。正しいロジックのコード例がありますか? –

関連する問題