Zona Mematikan
Termasuk bagian Fisika dan Gameplay dalam perjalanan Unity di Coddy. Pelajaran 18 dari 63.
Kill zone adalah trigger yang berada di tempat yang tidak boleh dicapai pemain: lava, duri, atau ruang kosong di bawah level. Saat memasukinya, pemain akan dikembalikan ke spawn point. Di sini, skrip milik lava yang melakukannya, dengan spawn point diatur pada field Transform di Inspector:
public Transform spawnPoint;
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
other.transform.position = spawnPoint.position;
other.attachedRigidbody.linearVelocity = Vector3.zero;
}
}other.attachedRigidbody adalah Rigidbody yang dimiliki collider yang masuk. Mengatur transform.position akan memindahkan pemain secara instan, seperti yang diperlukan untuk respawn. Namun, Rigidbody tetap mempertahankan kecepatannya saat melompat: pemain yang jatuh dengan kecepatan 10 unit per detik akan tiba di spawn point dengan tetap jatuh pada kecepatan 10, sedangkan pemain yang berlari ke arah lava akan terus berlari dan langsung masuk kembali. Mengatur linearVelocity ke Vector3.zero membuat pemain tiba dalam keadaan diam. Pemeriksaan tag membuat apa pun selain pemain yang jatuh ke lava tetap berada di tempatnya.
Tantangan
MudahPemain melintasi jembatan sempit di atas kehampaan, didorong oleh gaya menggunakan tombol panah; bagian itu sudah ditulis. Trigger bertag KillZone memenuhi ruang di bawah, dan bendera bertag Checkpoint, yang juga berupa trigger, berada di tengah jembatan. Tambahkan kemampuan respawn ke skrip pemain:
- Saat permainan dimulai, titik respawn berada di tempat pemain berdiri.
- Menyentuh
Checkpointmenjadikan posisi pemain pada saat itu sebagai titik respawn yang baru. - Memasuki
KillZonemengembalikan pemain ke titik respawn dalam keadaan diam.
Tekan Play dan berjalanlah keluar dari jembatan, lalu tekan Periksa.
Coba sendiri
using UnityEngine;
public class Player : MonoBehaviour
{
public float force = 12f;
Rigidbody body;
Vector3 input;
// respawn: tempat pemain muncul kembali
void Start()
{
body = GetComponent<Rigidbody>();
}
void Update()
{
input = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
}
void FixedUpdate()
{
body.AddForce(input * force);
}
// Checkpoint: ingat posisi pemain. KillZone: kembali ke posisi itu dan diam.
}
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