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.
Görev
OrtaPad'lerde bir BuildPad betiği vardır ve Game nesnesinde, towerPrefab alanı ArrowTower prefab'ı olan bir BuildManager bulunur.
BuildPad.csiçinde, bu pede inşa edilen kuleyi veya null değerini tutacak, Tower türündetoweradlı bir public alan ekleyin.BuildManageriçinde, serileştirilmiş private birtowerPrefabalanı (Tower türünde) ekleyin.Updateiçinde, bu karede sol fare düğmesine basıldığında kameradan fareye doğru bir ışın gönderin.- 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 pedintoweralanı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
{
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.