Menu
CoddyTech

Bangun Alas

Pelajaran 5 dari 18 dalam kursus Game Unity: Tower Defense di Coddy.

Pemain membangun menara dengan mengeklik alas bangunan, yaitu persegi abu-abu di samping jalur. Klik terjadi di layar dalam satuan piksel, sedangkan alas bangunan berada di dunia 3D, jadi klik tersebut menjadi sinar. Camera.main.ScreenPointToRay(point) mengembalikan sinar yang dimulai dari kamera dan melewati titik layar tersebut menuju scene, lalu Physics.Raycast menelusurinya dan melaporkan collider pertama yang terkena: objek yang dilihat pemain di bawah mouse. Berikut tool pengecatan yang mewarnai blok yang kamu klik:

void Update()
{
    if (!Mouse.current.leftButton.wasPressedThisFrame)
    {
        return;
    }

    Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue());
    if (Physics.Raycast(ray, out RaycastHit hit) && hit.collider.TryGetComponent(out Paintable block))
    {
        block.Paint(brushColor);
    }
}

Bagian kedua dari && hanya dijalankan ketika sinar mengenai sesuatu, jadi hit sudah terisi. TryGetComponent kemudian memeriksa apakah objek yang terkena adalah objek yang kamu perlukan: sinar juga mengenai tanah, jalur, dan pepohonan, yang tidak memiliki Paintable, jadi klik pada objek-objek tersebut tidak melakukan apa pun.

Setiap scene di sini hanya menggunakan Input System milik Unity 6, jadi Mouse.current membaca mouse. Posisinya menggunakan satuan piksel layar, sesuai dengan yang diharapkan ScreenPointToRay.

challenge icon

Tantangan

Sedang

Pad memiliki skrip BuildPad, dan object Game memiliki BuildManager yang towerPrefab-nya adalah prefab ArrowTower.

  1. Di BuildPad.cs, tambahkan field publik tower bertipe Tower: tower yang dibangun di pad ini, atau null.
  2. Di BuildManager, tambahkan field privat berseri towerPrefab (sebuah Tower). Di Update, saat tombol kiri mouse ditekan pada frame ini, tembakkan ray dari kamera melalui mouse.
  3. Saat ray mengenai collider yang memiliki BuildPad, dan pad tersebut belum memiliki tower, buat instance towerPrefab di posisi pad dan simpan tower baru itu di tower milik pad. Pad yang sudah memiliki tower, atau apa pun yang bukan pad, tidak melakukan apa-apa.

Tekan Play dan klik beberapa pad, lalu tekan Check.

Coba sendiri

using UnityEngine;

// Akan ditambahkan nanti: mengeklik area pembangunan untuk menempatkan menara, toko, dan panel menara.
public class BuildManager : MonoBehaviour
{
}
quiz iconUji dirimu

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

Semua pelajaran di Game Unity: Tower Defense