Menu
CoddyTech

Komponen Kecil

Termasuk bagian Arsitektur Game di Unity dalam perjalanan Unity di Coddy. Pelajaran 1 dari 50.

GameObject adalah daftar komponen, dan setiap script yang kamu tulis menjadi salah satunya. Game Unity dibuat dengan memberi setiap script satu tugas dan memasang beberapa script pada sebuah object. Gerakan, tembakan, dan poin nyawa pemain bisa ditempatkan dalam satu PlayerController, tetapi sebagai tiga komponen, Mover, Shooter, dan Health, masing-masing juga bisa dipasang pada object lain:

public class Health : MonoBehaviour
{
    public int hp = 3;

    public void TakeDamage(int amount)
    {
        hp -= amount;
        if (hp <= 0)
        {
            Destroy(gameObject);
        }
    }
}
  • Pemain: Mover, Shooter, Health
  • Meriam: Shooter, Health
  • Peti: Health

Dengan class C# biasa, kamu mungkin membuat hierarki pohon: Character, lalu ShootingCharacter : Character, lalu Player : ShootingCharacter. Meriam bisa menembak, tetapi tidak pernah berjalan, sedangkan peti hanya bisa hancur, jadi setiap jenis object baru mengharuskanmu mengubah bentuk hierarki pohon itu. Dengan komponen, jenis object baru merupakan perpaduan baru dari script yang sudah ada, yang disusun bersama di Inspector, dan setiap script bisa memiliki nilainya sendiri di sana: Mover yang lambat pada satu object, dan Mover yang cepat pada object lain.

Komponen pada satu object menggunakan Transform yang sama, jadi masing-masing hanya boleh mengubah bagian yang menjadi tanggung jawabnya. Mover yang menambahkan nilai ke x dan z dengan transform.position += membiarkan y tetap, sehingga Jumper pada object yang sama tetap bisa mengubah ketinggiannya. Mover yang menetapkan seluruh posisi ke new Vector3(x, 0.5f, z) akan mengembalikan y ke nilai semula setiap frame dan membatalkan lompatan.

challenge icon

Tantangan

Mudah

Boat.cs menjalankan tiga tugas sekaligus: panah (aksi Move) mengendalikan arah perahu, perahu mengapung naik turun mengikuti ombak, dan lampunya berkedip. Bebek juga perlu mengapung naik turun, sedangkan pelampung perlu mengapung naik turun dan berkedip. Jadi, scene sudah memberi mereka komponen Bobber dan Blinker, sementara perahu memiliki ketiganya. Pisahkan Boat.cs menjadi beberapa bagian:

  • Bobber: setiap object mengapung naik turun di sekitar ketinggian awalnya sejauh height unit, dengan speed masing-masing (Inspector mengatur keduanya). Bobber hanya mengubah y pada posisi, jadi perahu tetap bisa dikendalikan.
  • Blinker: komponen ini menyalakan dan mematikan lamp (sebuah Renderer) setiap interval detik.
  • Boat hanya menangani kendali arah: hapus bagian yang mengatur gerakan naik turun dan kedipan, beserta field-nya.

Tekan Play dan kendalikan perahu, lalu tekan Check.

Coba sendiri

using UnityEngine;
using UnityEngine.InputSystem;

// Satu skrip, tiga tugas: mengarahkan, mengayun, dan berkedip.
public class Boat : MonoBehaviour
{
    public float speed = 3f;
    public float bobHeight = 0.1f;
    public float bobSpeed = 2f;
    public Renderer lamp;
    public float blinkInterval = 0.5f;

    private InputAction moveAction;
    private float startY;
    private float blinkTimer;

    void Start()
    {
        moveAction = InputSystem.actions.FindAction("Move");
        startY = transform.position.y;
    }

    void Update()
    {
        // mengarahkan
        Vector2 input = moveAction.ReadValue<Vector2>();
        transform.position += new Vector3(input.x, 0f, input.y) * speed * Time.deltaTime;

        // mengayun
        Vector3 p = transform.position;
        p.y = startY + Mathf.Sin(Time.time * bobSpeed) * bobHeight;
        transform.position = p;

        // berkedip
        blinkTimer += Time.deltaTime;
        if (blinkTimer >= blinkInterval)
        {
            blinkTimer -= blinkInterval;
            lamp.enabled = !lamp.enabled;
        }
    }
}
quiz iconUji dirimu

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

Semua pelajaran di Arsitektur Game di Unity