2016-09-27 5 views
0

Ich habe folgende einfache Szene: skalierte Box bei (0, 0, 0) für Boden und 1 Größe Box bei (0, 2, 0). Ich versuche einfach die Schwerkraft und die Nutzung folgenden Code zu tun:IsGrounded in CharacterController nicht stabil

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); 
} 

ich in log sehen dieses Ereignis, wenn das Objekt auf dem Boden ich geerdet haben/nicht geerdet Nachrichten. Optisch ist das Objekt auf dem Boden und nicht oszillierend. Warum habe ich keine konstante "ist geerdet", wenn das Objekt auf dem Boden ist? Vielleicht ist es so, wie CharacterController funktioniert, aber ich kann nichts darüber in der Dokumentation finden.

+0

Können wir den Code, wo 'characterController.IsGrounded' sehen ist einstellen? –

+0

@ ḞḹáḿíṅḡⱫỏḿƀíé Diese Eigenschaft wird von der Unity-Engine gesteuert. Ich stelle es nicht ein. –

Antwort

0

hatte das gleiche Problem

hatte einfach etwas Schwerkraft, wenn die Zeichen Controller

verticalVelocity = 0; ersetzen geerdet ist

von verticalVelocity = -gravity * Time.deltaTime;

+0

Leider Problem immer noch hier: isGrounded produzieren wahr und falsch. Haben Sie ein Codebeispiel mit korrekter Logik? –