Kejar Pemain
Termasuk bagian Fisika dan Gameplay dalam perjalanan Unity di Coddy. Pelajaran 50 dari 63.
Musuh yang mengejar pemain memerlukan Rigidbody agar dinding dapat menghentikannya dan musuh itu dapat mendorong serta didorong. Pengejarannya sendiri berupa kecepatan yang diarahkan ke pemain, ditetapkan sekali setiap langkah fisika. Zombie ini berjalan menuju apa pun yang ada di slot player-nya:
[SerializeField] private Transform player;
[SerializeField] private float speed = 2.5f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
Vector3 toPlayer = player.position - rb.position;
toPlayer.y = 0f;
Vector3 dir = toPlayer.normalized;
rb.linearVelocity = new Vector3(dir.x * speed, rb.linearVelocity.y, dir.z * speed);
}player.position - rb.position mengarah dari zombie ke pemain. Nilai y-nya diatur ke 0 agar zombie berjalan mendatar saat pemain berdiri lebih tinggi atau lebih rendah, dan normalized membuat panjangnya menjadi 1, sehingga zombie berjalan dengan speed baik saat pemain berjarak 2 unit maupun 20 unit. Kecepatan baru mempertahankan kecepatan y sebelumnya, sehingga gravitasi tetap menarik zombie ke bawah saat melewati tepian. Rigidbody-nya mengaktifkan Freeze Rotation, sehingga zombie tidak terjungkal saat berjalan.
Kecepatan yang kamu tetapkan membuat pejalan yang langsung bergerak dan berbelok. Musuh yang berat dapat didorong dengan AddForce di FixedUpdate yang sama: musuh itu mengumpulkan kecepatan, mempertahankan momentumnya, dan bergerak melewati sasaran saat pemain menghindar. Hindari menggerakkan Transform pengejar: cara itu menempatkannya di dalam dinding semudah menempatkannya di tempat lain, lalu mesin fisika hanya dapat mendorongnya keluar setelahnya.
Tantangan
SedangSebuah batu besar menggelinding mengikuti pemain. Tulis skrip Boulder pada Boulder, sebuah bola dengan Rigidbody. Inspector memberinya player (Player) dan force (6). Skrip Player sudah siap: tombol panah menggerakkan pemain.
- Pada setiap langkah fisika, dorong batu besar ke arah pemain dengan
AddForce, dengan gaya sebesarforcebaik pemain dekat maupun jauh. - Dorong hanya di sepanjang permukaan tanah, tanpa gerakan ke atas atau ke bawah, bahkan saat pemain berdiri di tepi.
- Jangan gerakkan Transform-nya atau bekukan rotasinya: gesekan akan membuatnya menggelinding.
Tekan Play, berlarilah mengitari batu besar, lalu tekan Check.
Coba sendiri
using UnityEngine;
public class Boulder : MonoBehaviour
{
[SerializeField] private Transform player;
[SerializeField] private float force = 6f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// dorong batu besar ke arah pemain, menyusuri tanah
}
}
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