Skok z impulsem
Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 3 z 63.
AddForce przyjmuje drugi argument, ForceMode, który określa, jak użyć wektora. Jeśli go nie podasz, otrzymasz ForceMode.Force — pchnięcie działające przez jeden krok fizyki, więc trzeba je dodawać krok po kroku. Kopnięcie, skok lub wybuch następują jednorazowo — odpowiada za to ForceMode.Impulse: całe pchnięcie naraz, zmieniające prędkość o impuls podzielony przez masę.
Ta piłka nożna (0.5 kg) jest kopana po kliknięciu. Jej prędkość zwiększa się o (0, 2, 6) / 0.5 = (0, 4, 12) m/s w następnym kroku fizyki, a potem działają na nią grawitacja i trawa:
void Update()
{
if (Input.GetMouseButtonDown(0))
{
rb.AddForce(new Vector3(0, 2, 6), ForceMode.Impulse);
}
}Jednorazowe pchnięcie można wywołać z Update() w klatce, w której nastąpiło kliknięcie: Unity zachowuje je i stosuje w następnym kroku fizyki. Cztery tryby różnią się pod dwoma względami: czy działają jednorazowo, czy przez jeden krok oraz czy uwzględniają masę:
Force: przez jeden krok, z uwzględnieniem masy (silniki, wiatr).Acceleration: przez jeden krok, bez uwzględniania masy.Impulse: jednorazowo, z uwzględnieniem masy (kopnięcia, skoki).VelocityChange: jednorazowo, bez uwzględniania masy: wektor jest bezpośrednio dodawany do prędkości.
Wyzwanie
ŁatwySpraw, by żaba skakała. Każde naciśnięcie klawisza spacji daje jej jedno pchnięcie w górę o wartości jumpImpulse (10 w Inspectorze). Żaba waży 2 kg, a skok musi uwzględniać jej masę: cięższa żaba skacze niżej.
Przytrzymanie klawisza spacji nadal oznacza tylko jeden skok. Naciśnij Graj i poskacz, a następnie Sprawdź.
Spróbuj swoich sił
using UnityEngine;
public class FrogJump : MonoBehaviour
{
public float jumpImpulse = 10f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
// Space: pojedyncze pchnięcie w górę o sile jumpImpulse
}
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Fizyka i rozgrywka
1Ciało sztywne
Grawitacja i masaPopychanie za pomocą AddForceSkok z impulsemFixedUpdate dla fizykiPrędkośćCiała kinematycznePowtórka: platforma startowa2Kolizje
OnCollisionEnterW co uderzyłem?Rozbijanie przy zderzeniuStanie na podłożuOdbicie i tarcieKształty colliderówPodsumowanie: Zniszczalny mur