2016-07-28 27 views
-1

Ich habe ein Objekt, das auf den Boden gelegt wird. Wenn ich die "Leertaste" drücke, muss es springen und auf den Boden fallen. um es fallen zu lassen verwende ich Schwerkraft mit starrem Körper. Ich befestigte es an boxcollider des Bodens, so dass es erkennen kann, wenn auf Boden und Luft durch OnTriggerEnter() und OnTriggerExit() respectly ist. der Code folgt: -Wie man einen Sprung wie Effekt für Objekt in Einheit 3d macht?

#pragma strict 

var jumping:boolean=false;//when the body is in air that is still jumping 
var grounded:boolean=true;//laid on ground 
var body: Rigidbody; 
function Start() 
{ 
body = GetComponent.<Rigidbody>(); 
} 

function Update() { 


if(Input.GetKey("up")){transform.Translate(-3*Time.deltaTime,0,0);} 
if(Input.GetKey("left")){transform.Translate(0,0,-3*Time.deltaTime);} 

if(Input.GetKey("right")){transform.Translate(0,0,3*Time.deltaTime);} 

if(Input.GetKey("down")){transform.Translate(3*Time.deltaTime,0,0);} 

if(Input.GetKey("space")) 
{ 
jumping=true; 
if(grounded && jumping) 
{ 
body.AddForce(transform.up*5); 
} 
} 
} 


//On the ground 
function OnTriggerEnter() 
{ 
grounded=true;jumping=false; 
body.useGravity=false; 
} 
//On the ground 
function OnTriggerStay() 
{ 
body.useGravity=false; 
grounded=true;jumping=false; 
} 
//jumping 
function OnTriggerExit() 
{ 
body.useGravity=true; 
grounded=false;jumping=false; 
} 

aber nicht springen wird, stattdessen geht es während nach oben und unten contineously fallen. Auch wenn useGravity falsch wird, fällt sie weiter ab.

Was ist falsch in meinem Code?

Vielen Dank im Voraus.

Antwort

0

Das Problem ist mit ForceMode. Sie definieren es nicht, so dass es standardmäßig Force ist, aber Sie brauchen Impulse für einen Sprung wie Effekt.

Here's a link in die Dokumentation für ein besseres Verständnis.

+0

Ja, du hast Recht. Ich habe Forcemode zu VelocityChange geändert. , d. H. body.AddForce (transform.up * 5, ForceMode.VelocityChange); das ist in Ordnung. aber es fällt kontinuierlich zusammen, obwohl die Anwendungsgravitation fällt. – ArunKumarmn

+0

Das Layout sollte falsch sein (z. B. zu dünner "Boden" Collider). Fügen Sie debug.log-Ereignisse in Ihre Aufrufe ein, um zu sehen, was passiert. –

+0

Ich erhöhte die Collidergröße, hat nicht funktioniert. meine Idee war das Objekt sollte aufhören zu fallen, wenn die Variable body.useGravity = false; also, wenn es falsch wird, fällt es weiter herunter. – ArunKumarmn