Güçlendirme Yakala
Coddy'nin Unity Oyunu: Tuğla Kırma kursunda ders 15 / 19.
Güçlendirici yakalamayı kendisi algılar: tetikleyici çarpıştırıcısı raketin çarpıştırıcısına dokunur ve her iki gövde de kinematiktir; bu, OnTriggerEnter için yeterlidir. Topun yanından da geçer, bu yüzden önce etiketi kontrol eder.
Bir enum türleri adlandırır ve her prefab kendi türünü Inspector'da ayarlar; böylece tek bir betik ikisine de hizmet eder:
public enum Kind { Wide, Multiball }
public Kind kind;
if (kind == Kind.Multiball) Debug.Log("Three balls");other.GetComponent<Paddle>(), güçlendiricinin dokunduğu nesnedeki Paddle betiğini bulur. Şimdilik Genişlet yalnızca günlük kaydı oluşturur; sonraki derste raketin büyümesi sağlanacak.
Görev
ZorDüşen bir güçlendirmeyi paletle yakala.
PowerUpiçindepublic enum Kind { Wide, Multiball }vepublic Kind kind;ekle (her prefab kendi kind değerini ayarlar).OnTriggerEnter(Collider other)ekle:other.CompareTag("Paddle")koşulu sağlanmıyorsa geri dön; Wide olan bir güçlendirmeother.GetComponent<Paddle>().Widen();çağrısı yapar, ardındanDestroy(gameObject);çağrılır.Paddleiçinde şimdilikWide paddlemesajını kaydedenpublic void Widen()ekle.
“Oyna” düğmesine bas ve yeşil olanı yakala: kaybolur ve Console'da Wide paddle görünür. Ardından “Kontrol et”.
Kendin dene
using UnityEngine;
using UnityEngine.InputSystem;
public class Paddle : MonoBehaviour
{
public float speed = 14f;
public float wallX = 8f; // yan duvarların iç yüzeyleri -wallX ve wallX konumlarındadır
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);
}
}
Unity Oyunu: Tuğla Kırma bölümündeki tüm dersler
Kendi başına pratik yap: Unity playground