2016-05-18 13 views
0

Ich bin ein Anfänger und versuchen, Penalty-Shooter Spiel in Einheit .. Ich habe gerade die Szene eingerichtet und versuche nur den Ball in Richtung Torpfosten schießen. Wenn ich den Ball schieße, geht er auf das Ziel zu, fällt aber nicht herunter, weil ich ihn durch das Drehbuch schieße und seine Schwerkraft aus ist und kinematisch ist.Wie kann ich Fußball eine Flugbahn geben?

Zur Zeit habe ich das folgende Skript:

void Start() { 
     startTime = Time.time; 
     rb.GetComponent<Rigidbody>(); 
    } 

void Update() { 

     transform.position -= fakevel * Time.deltaTime; 
     transform.position += fakeGravity * Time.deltaTime; 
     fakevel *= 0.999f ; 
} 

    void OnTriggerEnter(Collider other) { 

      fakevel = new Vector3(0.01f, 0, 0) * 2000f; 
      fakeGravity = new Vector3 (0 ,0.01f, 0)* 200f; 
      y = -45.68312f; 

      }  
     } 

ich versucht habe, so dass die Schwerkraft und die kinematische irgend bestimmte Position zu deaktivieren, aber ich tue so die Schwerkraft es gerade an dieser Position nach unten ziehen und es sieht nicht so aus realistisch. Einige Bildschirmfotos sind beigefügt. enter image description here

Bitte helfen Sie mir in Flugbahn des Balls einstellen und es zu stoppen, wenn es mit dem Torpfosten kollidiert,

Antwort

1

Ich würde vorschlagen, dass Sie einen nicht-Kinematik auf dem Ball Starrkörper verwenden und eine Kraft, um es hinzuzufügen, wenn Sie Schießen Sie es: GetComponent<Rigidbody>().AddForce(forceVector3, ForceMode.Impulse) (Dies ist nur ein Beispiel, sollten Sie vermeiden GetComponent auf einer häufigen Basis zu verwenden, Sie sind besser off nennt es für die Starrkörper-Komponente einmal auf Start und speichern Sie es in einer privaten Variable)

Auf diese Weise Einheit Physik Der Motor kann mit der Schwerkraft und der Geschwindigkeit der Bälle umgehen. Um die Flugbahn zu modifizieren, können Sie mit den Eigenschaften der Starrkörperkomponente der Kugeln herumspielen.

Wenn Sie mehr Kontrolle über die Geschwindigkeit haben wollen, können Sie auch die Geschwindigkeit des Starrkörpers direkt in der FixedUpdate() (die kurz vor jedem Physik-Update genannt wird) einstellen. Dabei muss man berücksichtigen, dass die Geschwindigkeit in m/s gemessen wird und die Physik-Engine die Teilschritte für Sie übernimmt (ich nehme an, dass FixedUpdate() mehr als einmal pro Sekunde aufgerufen wird), dh Sie müssen Ihre Geschwindigkeit nicht multiplizieren mit etwas Delta-Zeit (aber ich bin mir im Moment nicht 100% sicher).

+0

Danke @xyLe_ ich bin niw mit der Physik den Ball zu schlagen und es tut Wort :) danke –

1

Sehen, wie es funktioniert, nur nicht den gewünschten Effekt, können Sie entweder verbringen mehrere Stunden Feinabstimmung es, oder wie xyLe_ angegeben, verwenden Sie die integrierte Physik. Die eingebaute Physik ist keine schlechte Sache, man muss einfach clever sein. Sie können auch ein Material für federnde Physik hinzufügen, das dem Ball ein gutes Ballgefühl verleiht.

Verwandte Themen