Menu
CoddyTech

Efek Terpental

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

Efek dorongan balik adalah tendangan menjauh dari apa pun yang mengenainya: satu impuls sepanjang garis dari benda yang menendang ke benda yang terkena. Bumper ini mendorong menjauh semua benda yang menabraknya:

[SerializeField] private float power = 8f;

void OnCollisionEnter(Collision collision)
{
    Vector3 away = collision.transform.position - transform.position;
    away.y = 0f;
    collision.rigidbody.AddForce(away.normalized * power, ForceMode.Impulse);
}

collision.transform.position - transform.position menunjuk dari bumper ke benda yang menabraknya. Nilai y-nya diatur menjadi 0 agar tendangannya tetap mendatar, dan normalized membuat panjangnya tetap sama, berapa pun jarak antara kedua pusat benda. ForceMode.Impulse adalah tendangan sekali saja: mode ini mengubah kecepatan sebesar power dibagi massa, sekaligus, sehingga bola bermassa 2 melesat dengan setengah kecepatan bola bermassa 1. ForceMode.Force sebagai nilai default dimaksudkan untuk diterapkan pada setiap langkah dan memberikan gaya sebesar satu langkah, 50 kali lebih kecil.

Tendangan itu hanya bertahan selama tidak ada yang menimpa kecepatan. Pemain yang FixedUpdate-nya mengatur rb.linearVelocity berdasarkan tombol panah pada setiap langkah akan kehilangan efeknya satu langkah kemudian. Jadi, skrip seperti itu harus membiarkan kecepatan tetap apa adanya sejenak setelah terkena benturan, atau menggerakkan pemain dengan gaya.

challenge icon

Tantangan

Sedang

Pemain dapat memicu gelombang kejut. Tulis skrip Shockwave pada Player. Inspector memberinya radius (4), power (6), dan lift (2). Skrip Player sudah siap: tombol panah menggerakkan pemain.

  • Saat Space ditekan, cari setiap collider dalam jangkauan radius dari pemain dengan Physics.OverlapSphere.
  • Setiap collider yang memiliki Rigidbody, kecuali pemain itu sendiri, mendapat Impulse: power menjauh dari pemain di sepanjang permukaan tanah, ditambah lift ke atas.
  • Collider tanpa Rigidbody, seperti tanah, tidak terpengaruh.

Tekan Play, berjalanlah di antara peti lalu tekan Space, kemudian Periksa.

Coba sendiri

using UnityEngine;

public class Shockwave : MonoBehaviour
{
    [SerializeField] private float radius = 4f;
    [SerializeField] private float power = 6f;
    [SerializeField] private float lift = 2f;

    void Update()
    {
        // saat Space ditekan: dorong setiap Rigidbody dalam radius menjauh dari pemain
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Fisika dan Gameplay