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.
Tantangan
SedangMulai 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, aturlinearDampingpada Rigidbody menjadiaccel / topSpeed, agar kecepatan player stabil di sekitartopSpeed. - 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.Accelerationdan akselerasi sebesaraccel. - 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
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Fisika dan Gameplay
1Rigidbody
Gravitasi dan MassaDorong dengan AddForceMelompat dengan ImpulsFixedUpdate untuk FisikaKecepatanBenda KinematikRingkasan: Landasan Peluncur2Tabrakan
OnCollisionEnterApa yang Kutabrak?Pecah Saat BenturanBerdiri di Atas TanahPantulan dan GesekanBentuk ColliderRangkuman: Dinding yang Bisa Hancur