Menu
CoddyTech

Platformları İnşa Et

Coddy'nin Unity Oyunu: Kule Savunması kursunda ders 5 / 18.

Oyuncu, yolun yanındaki gri kareler olan inşa platformlarına tıklayarak kuleler inşa eder. Tıklama ekranda, piksellerle gerçekleşir; platformlar ise 3D dünyadadır, bu yüzden tıklama bir ışına dönüşür. Camera.main.ScreenPointToRay(point), kameradan başlayıp ekrandaki o noktadan sahneye doğru giden ışını döndürür ve Physics.Raycast bu ışını izleyerek çarptığı ilk çarpıştırıcıyı bildirir: oyuncunun fare imlecinin altında gördüğü nesneyi. Tıkladığınız bloğu renklendiren bir boya aracı:

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);
    }
}

&& ifadesinin ikinci yarısı yalnızca ışın bir şeye çarptığında çalışır, böylece hit doldurulmuş olur. Ardından TryGetComponent, çarpılan nesnenin ilgilendiğiniz nesne olup olmadığını sorar: ışın zemine, yola ve ağaçlara da çarpar; bunlarda Paintable olmadığı için bu tıklamalar hiçbir şey yapmaz.

Buradaki her sahne yalnızca Unity 6'nın Input System'ini kullanır, bu nedenle Mouse.current fareyi okur. Farenin konumu ekran pikselleri cinsindendir ve ScreenPointToRay'in beklediği de budur.

challenge icon

Görev

Orta

Pad'lerde bir BuildPad betiği vardır ve Game nesnesinde, towerPrefab alanı ArrowTower prefab'ı olan bir BuildManager bulunur.

  1. BuildPad.cs içinde, bu pede inşa edilen kuleyi veya null değerini tutacak, Tower türünde tower adlı bir public alan ekleyin.
  2. BuildManager içinde, serileştirilmiş private bir towerPrefab alanı (Tower türünde) ekleyin. Update içinde, bu karede sol fare düğmesine basıldığında kameradan fareye doğru bir ışın gönderin.
  3. Işın, bir BuildPad bileşeni bulunan bir çarpıştırıcıya çarptığında ve o pede henüz bir kule inşa edilmemişse, towerPrefab örneğini pedin konumunda oluşturun ve yeni kuleyi pedin tower alanına kaydedin. Kulesi olan bir ped veya ped olmayan herhangi bir şey hiçbir işlem yapmaz.

Play'e basıp birkaç pede tıklayın, ardından Check'e basın.

Kendin dene

using UnityEngine;

// Daha sonra eklenecekler: kule yerleştirmek için inşa alanlarına tıklama, mağaza ve kule paneli.
public class BuildManager : MonoBehaviour
{
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Unity Oyunu: Kule Savunması bölümündeki tüm dersler