2016-09-21 4 views
0

Ich arbeite an einem Breakout-Spiel in Unity mit C# und wollte wissen, wie man die Geschwindigkeit des Balls im Laufe der Zeit erhöhen kann, ohne den Winkel/Richtung des Balls zu ändern nachdem ich mit dem Paddel kollidiert bin, möchte ich, dass der Ball in die gleiche Richtung/den gleichen Winkel fährt (sagen wir 45 Grad).Einheit, die die Ballgeschwindigkeit erhöht und gleichzeitig die Richtung konstant hält

Zu Beginn verwende ich den einfachen Code, der unten an einem Box Collider auf der linken Seite des Paddels angebracht ist, um den Ball nach links zu bewegen, wie gewünscht. Dies bringt den richtigen Winkel, aber ich wollte die Geschwindigkeit im Laufe der Zeit erhöhen, aber nicht sicher, wie.

void OnCollisionEnter2D(Collision2D col) { 

    if (col.gameObject.tag == "ball") { 
     col.gameObject.GetComponent<Rigidbody2D>().velocity = new Vector2 (-10f, col.gameObject.transform.position.y); 
    } 
} 
+0

Wollen Sie eine maximale Geschwindigkeit erreichen oder einfach immer schneller werden? –

+0

Geschwindigkeit nicht berühren, stattdessen AddForce verwenden und die Physik herausfinden lassen, was als nächstes passiert. Um im Laufe der Zeit zu beschleunigen, benutze die Update() -Methode des Balls. Z.B. if (isBallSpeeding) [ballGOs RB2D] .AddForce (Betrag, Typ); –

+0

werde immer schneller – Kaz

Antwort

1

ich einfach vergessen, die grundlegendste Lösung, um zu versuchen, die den Vektor mit einer Geschwindigkeit variabel zu multiplizieren ist, duh !. Dies ist das beabsichtigte Verhalten, das ich suchte.

col.rigidbody.velocity = new Vector2 (-10f, col.gameObject.transform.position.y) * speed; 
Verwandte Themen