Menu
CoddyTech

Pecah Saat Benturan

Termasuk bagian Fisika dan Gameplay dalam perjalanan Unity di Coddy. Pelajaran 10 dari 63.

Seberapa keras benturannya? collision.relativeVelocity adalah kecepatan kedua object saat saling mendekat ketika bertemu, dan magnitude-nya adalah kecepatan benturan dalam m/s. Ini adalah selisih kecepatan: mobil yang melaju dengan kecepatan 10 m/s dan menabrak mobil yang melaju searah dengan kecepatan 8 m/s hanya membentur dengan kecepatan 2 m/s, dan kedua mobil merasakan kecepatan benturan yang sama.

Telur ini pecah saat mendarat dengan kecepatan lebih dari crackSpeed. Jika dijatuhkan dari ketinggian 1 m, telur membentur dengan kecepatan sekitar 4.4 m/s (akar kuadrat dari 2 x 9.81 x 1), dan dari ketinggian 2 m dengan kecepatan sekitar 6.3 m/s:

public float crackSpeed = 5f;

void OnCollisionEnter(Collision collision)
{
    if (collision.relativeVelocity.magnitude > crackSpeed)
    {
        Debug.Log("Splat!");
        Destroy(gameObject);
    }
}

Mengapa bukan rb.linearVelocity milik telur? Saat OnCollisionEnter dijalankan, fisika sudah menangani benturan, jadi yang tersisa adalah kecepatan telur setelah benturan, yang hampir nol. relativeVelocity mempertahankan kecepatan benturannya. Ini adalah kecepatan, jadi massa tidak berpengaruh: telur yang berat dan telur yang ringan saat mendarat dengan kecepatan 6 m/s sama-sama melaporkan 6.

challenge icon

Tantangan

Mudah

Bola menggelinding ke arah jendela: panah atas membuatnya menggelinding pelan, sedangkan Space membuatnya menggelinding keras (Bowler.cs, sudah ditulis). Tulis Window.cs. Jendela memiliki strength (10 di Inspector).

  • Setiap benturan mengurangi kekuatan jendela sebesar kecepatan benturannya: benturan dengan kecepatan 2 m/s mengurangi strength sebanyak 2.
  • Saat strength mencapai 0 atau kurang, jendela pecah: hancurkan jendela.

Tekan Play, gelindingkan beberapa bola pelan lalu satu bola keras, kemudian tekan Periksa.

Coba sendiri

using UnityEngine;

public class Window : MonoBehaviour
{
    public float strength = 10f;

    // Setiap benturan mengurangi strength sebesar kecepatan benturannya; saat mencapai 0, jendela pecah
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Fisika dan Gameplay