Menu
CoddyTech

Arena

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

Bab ini membuat Arena Escape. Kamu menghindari para pemburu di arena berdinding saat gelombang demi gelombang berdatangan, tiga kali terkena serangan mengakhiri permainan, dan setelah gelombang terakhir habis, pintu keluar terbuka. Game ini terdiri dari lima skrip yang sudah ada di proyek sejak awal: Player, Hunter, Spawner, Health, dan Exit. Empat skrip terakhir masih kosong untuk sekarang, dan setiap pelajaran mengisi satu skrip.

Pemain bergerak dengan gaya, bukan dengan kecepatan yang ditetapkannya, sehingga dorongan balik dari pemburu menambah gerakannya alih-alih menghapusnya. Dorongan saja akan membuatnya terus bertambah cepat, jadi linearDamping mengurangi sebagian kecepatannya pada setiap langkah: dorongan yang stabil akan mencapai kecepatan puncak sekitar percepatan dibagi redaman. Kereta luncur melayang ini mendorong ke depan selama Spasi ditekan:

[SerializeField] private float accel = 12f;
private Rigidbody rb;

void Start()
{
    rb = GetComponent<Rigidbody>();
    rb.linearDamping = 2f;
}

void FixedUpdate()
{
    if (Input.GetKey(KeyCode.Space))
    {
        rb.AddForce(transform.forward * accel, ForceMode.Acceleration);
    }
}

Dengan percepatan 12 dan redaman 2, kereta luncur mencapai kecepatan maksimum sekitar 6 unit per detik. Saat Spasi dilepas, redaman menghentikannya alih-alih membiarkannya meluncur terus. ForceMode.Acceleration mengabaikan massa, jadi kereta luncur yang berat bertambah cepat persis seperti yang ringan. Collider kereta luncur menggunakan PhysicsMaterial tanpa gesekan: jika ada gesekan dari lantai selain redaman, kecepatan maksimumnya akan lebih rendah.

challenge icon

Tantangan

Sedang

Mulai Arena Escape dengan player. Inspector memberikan nilai accel (18) dan topSpeed (6) pada skrip Player. Player memiliki massa 2 dan material tanpa gesekan, sedangkan empat skrip lainnya tetap kosong untuk saat ini.

  • Di Start, atur linearDamping pada Rigidbody menjadi accel / topSpeed, agar kecepatan player stabil di sekitar topSpeed.
  • Pada setiap langkah fisika, dorong player menggunakan tombol panah, ke kiri dan kanan sepanjang sumbu x, serta ke atas dan bawah sepanjang sumbu z, dengan ForceMode.Acceleration dan akselerasi sebesar accel.
  • Normalisasikan arah tombol panah, agar gerakan diagonal tidak lebih cepat daripada gerakan lurus.

Tekan Play dan meluncurlah mengitari arena, lalu tekan Check.

Coba sendiri

using UnityEngine;

public class Player : MonoBehaviour
{
    [SerializeField] private float accel = 18f;
    [SerializeField] private float topSpeed = 6f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // atur redaman, lalu push pemain dengan tombol panah
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Fisika dan Gameplay