Menu
CoddyTech

Raket

Coddy'nin Unity Oyunu: Tuğla Kırma kursunda ders 1 / 19.

Bu kursta, 3D Brick Breaker’ı inşa ediyorsun. Bu derste bir palet, zıplayan bir top, tuğla duvarı, canlar, seviyeler ve güçlendirmeler yer alıyor. Her şey z 0 düzlemindeki x ve y eksenlerinde hareket ediyor. Paddle, Ball, Brick, GameManager ve PowerUp betikleri şimdilik boş taslaklar. “Oyna” oyunu çalıştırır; “Kontrol et” kodunu değerlendirir.

Palet, kinematik bir Rigidbody bileşenine sahiptir ve fiziğin hareketini algılaması için FixedUpdate() içinde rb.MovePosition ile hareket ettirilir. Kinematik bir cisim duvarların içinden geçer, bu yüzden betik onu sınırlar içinde tutar. Merkezini duvarda sınırlamak, paletin yarısının duvarın içinde kalmasına neden olur: sınır, duvar konumundan paletin genişliğinin yarısı çıkarılarak bulunur. Duvarlar -6 ve 6 konumlarındaysa ve palet 2 birim genişliğindeyse:

float half = 2f / 2f;
target.x = Mathf.Clamp(target.x, -6f + half, 6f - half);
rb.MovePosition(target);

Merkez -5 ile 5 arasında kalır, böylece uçlar tam olarak duvarlarda durur. Genişliği her adımda transform.localScale.x üzerinden okumak, palet büyürse sınırın doğru kalmasını sağlar.

challenge icon

Görev

Kolay

Paleti duvarların arasında hareket ettir.

  1. Paddle içindeki FixedUpdate() bölümünde, sol ok veya A tuşu basılıyken float input değerini -1, sağ ok veya D tuşu basılıyken 1, aksi hâlde 0 yap.
  2. Vector3 target = rb.position + Vector3.right * input * speed * Time.fixedDeltaTime; değerini hesapla.
  3. float half = transform.localScale.x / 2f; ile target.x değerini -wallX + half ile wallX - half arasında sınırla, ardından rb.MovePosition(target); çağır.

“Oyna” düğmesine bas ve her iki duvara da kaydır: palet her birinde durur. Ardından “Kontrol et” düğmesine bas.

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 konumundadır

    Rigidbody rb;

    void Awake()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // Ok tuşlarıyla veya A ve D tuşlarıyla hareket et ve duvarların arasında kal.
    }
}

Unity Oyunu: Tuğla Kırma bölümündeki tüm dersler

Kendi başına pratik yap: Unity playground