Unity 3D Ball rollen anhalten/bremsen skript?
Guten Tag,
Ich arbeite seit etwa einen Monat an einem Golfspiel wo man einen Golfball kicken kann in dem man auf den Bildschirm klickt und ja ich bin auch noch neu bei Unity C# und brauche ein Skript bei den man das Rollen vom Ball stoppen/bremsen kann.
Kann mir da einer helfen? danke schonmal im voraus (:
1 Antwort
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.