Unity 3D Ball rollen anhalten/bremsen skript?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

angenommen, dein Ball wird mit rigidbody.addforce() bewegt:

Um den Ball sofort anzuhalten, setzt du die velocity beim rigidbody auf 0

GetComponent<Rigidbody>().velocity = 0;

weil das jetzt unschön aussieht und sofort bremst, könntest du die Funktion Lerp in diesem Script anschauen. (Den unteren Block kannst du ignorieren, der lässt das Objekt nur wieder zurück gleiten)

bool stopp = false;
float minimum = 0;
float maximum = 0;
float t = 0;

void Update()
{
    if(stopp) 
    {
       rigidbody.velocity = Mathf.Lerp(minimum, maximum, t);
       t += 0.5f * Time.deltaTime;
    }
    else
    {
        if(Input.GetButtonDown("irgendwas eben"))
        {
           minimum = rigidbody.velocity; //die aktuelle geschwindigkeit (startwert)
           t = 0; //t zurücksetzen, falls davor schonmal gebremst wurde
           stopp = true;
        }
    }
}

jetzt kannst du natürlich nach dem vollständigen bremsen den boolean wieder false setzen, damit er erneut bremsen kann oder du setzt ihn beim "abschlagen" wieder auf false, ist ganz dir überlassen.


Fertos 
Beitragsersteller
 17.06.2020, 21:42

Das hat mir gut geholfen, Dankeschön :D

0