Tüm Rehberler

Fruit Ninja Klonu — Meyve Kesme Oyunu

Orta ⏱ 120 dk
BÖLÜM 5 / 10

Kesme Sistemi — Mouse Swipe Tespiti

Mouse hızlı sürüklendiğinde meyveleri kesen BladeController sistemini yazıyoruz.

OverlapAreaAll dikdörtgen kontrol eder. Diyagonal swipe için CircleCast daha hassas.

Unity Editör Adımları

'+' > Create Empty → 'Blade'
Trail Renderer ekle: Time=0.15, Material=Default-Line
Script: 'BladeController' ekle
fruitLayer için Layers menüsünden 'Fruit' Layer oluştur
csharp
using UnityEngine;

public class BladeController : MonoBehaviour
{
    public float minSwipeSpeed = 5f;
    public LayerMask fruitLayer;
    private Camera cam;
    private Vector2 lastPos;
    private TrailRenderer trail;

    void Start()
    {
        cam = Camera.main;
        trail = GetComponent<TrailRenderer>();
        trail.emitting = false;
    }

    void Update()
    {
        if (!GameManager.Instance.IsPlaying()) return;
        Vector2 pos = cam.ScreenToWorldPoint(Input.mousePosition);
        transform.position = pos;
        if (Input.GetMouseButtonDown(0)) { lastPos = pos; trail.emitting = true; }
        else if (Input.GetMouseButton(0))
        {
            if (Vector2.Distance(pos, lastPos) / Time.deltaTime > minSwipeSpeed)
            {
                foreach (var hit in Physics2D.OverlapAreaAll(Vector2.Min(lastPos,pos), Vector2.Max(lastPos,pos), fruitLayer))
                    hit.GetComponent<Fruit>()?.Slice();
            }
            lastPos = pos;
        }
        else if (Input.GetMouseButtonUp(0)) trail.emitting = false;
    }
}

Fruit Layer ile sadece meyveler kontrol edilir, performans korunur.

Önceki Bölüm Sonraki Bölüm