Ambil Power-Up
Pelajaran 15 dari 19 dalam kursus Game Unity: Brick Breaker di Coddy.
Power-up mendeteksi tabrakan itu sendiri: trigger collider-nya menyentuh collider paddle, dan kedua objek bersifat kinematic, sehingga OnTriggerEnter dapat berjalan. Power-up juga melewati bola, jadi periksa tag terlebih dahulu.
Enum memberi nama pada jenis-jenisnya, dan setiap prefab mengatur jenisnya sendiri di Inspector, sehingga satu skrip bisa menangani keduanya:
public enum Kind { Wide, Multiball }
public Kind kind;
if (kind == Kind.Multiball) Debug.Log("Three balls");other.GetComponent<Paddle>() menemukan skrip Paddle pada objek yang disentuh power-up. Untuk saat ini, Wide hanya mencatat log; pelajaran berikutnya membuat paddle membesar.
Tantangan
SulitTangkap power-up yang jatuh dengan paddle.
- Di
PowerUp, tambahkanpublic enum Kind { Wide, Multiball }danpublic Kind kind;(setiap prefab menentukan jenisnya). - Tambahkan
OnTriggerEnter(Collider other): kembalilah jikaother.CompareTag("Paddle")tidak benar; power-up jenis Wide memanggilother.GetComponent<Paddle>().Widen();, laluDestroy(gameObject); - Di
Paddle, tambahkanpublic void Widen()yang untuk saat ini mencatatWide paddle.
Tekan tombol “Main” dan tangkap power-up berwarna hijau: power-up itu menghilang dan Console menampilkan Wide paddle. Lalu tekan tombol “Periksa”.
Coba sendiri
using UnityEngine;
using UnityEngine.InputSystem;
public class Paddle : MonoBehaviour
{
public float speed = 14f;
public float wallX = 8f; // sisi dalam dinding samping berada di -wallX dan wallX
Rigidbody rb;
void Awake()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
float input = 0f;
if (Keyboard.current.leftArrowKey.isPressed || Keyboard.current.aKey.isPressed) input -= 1f;
if (Keyboard.current.rightArrowKey.isPressed || Keyboard.current.dKey.isPressed) input += 1f;
Vector3 target = rb.position + Vector3.right * input * speed * Time.fixedDeltaTime;
float halfWidth = transform.localScale.x / 2f;
target.x = Mathf.Clamp(target.x, -wallX + halfWidth, wallX - halfWidth);
rb.MovePosition(target);
}
}
Semua pelajaran di Game Unity: Brick Breaker
4Power-Up
Item JatuhLatihan sendiri: Playground Unity