Menu
CoddyTech

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.

challenge icon

Tantangan

Sedang

Sebuah 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 sebesar force baik 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
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Fisika dan Gameplay