Üç Şerit
Coddy'nin Unity Oyunu: Gökyüzü Şeritleri kursunda ders 1 / 20.
Bu kursta baştan sona bir oyun geliştiriyorsun; her derste bir özellik ekliyorsun. Bir koşucu gökyüzünde yüksekteki bir yolda ilerliyor. Önüne bariyerler, parmaklıklar ve duvarlar çıkıyor, şeritler boyunca madeni paralar sıralanıyor ve ne kadar uzun dayanırsan yol o kadar hızlanıyor.
Projede zaten dört betik var: oyuncudaki Runner, Road, GameManager ve Coin. Şimdilik çoğu boş ve ders ilerledikçe doldurulacak. Kameradaki beşinci betik CameraFit hazır olarak veriliyor: uzun bir telefon ekranında görünümü genişleterek üç şeridin de sığmasını sağlıyor ve bu betikte değişiklik yapman gerekmeyecek.
Koşucu asla ileri doğru hareket etmez. Yalnızca üç şerit arasında hareket eder: sol, orta ve sağ. Şerit numarasını -1, 0 veya 1 değerlerinden biri olan bir tam sayı olarak tut ve bunun x eksenindeki konumunu hesapla:
float targetX = lane * laneWidth;Koşucuda bir CharacterController var, bu yüzden controller.Move(motion) ile hareket ediyor: Move, bu karede ne kadar ilerleyeceğini alır; varacağı konumu değil. targetX konumuna ulaşmak için, koşucunun şu anki konumu ile bu konum arasındaki fark kadar ilerle:
float x = targetX;
Vector3 move = new Vector3(x - transform.position.x, 0f, 0f);
controller.Move(move);Mathf.Max(-1, lane - 1), lane - 1 değeridir ama hiçbir zaman -1’den küçük olmaz; böylece en soldaki şeridin ötesinde bir şerit bulunmaz.
Görev
KolayRunner.Updateiçinde, A veya sol ok tuşuna basıldığında (Input.GetKeyDown),lane = Mathf.Max(-1, lane - 1)değerini ayarla.- D veya sağ ok tuşuna basıldığında
lane = Mathf.Min(1, lane + 1)değerini ayarla. - Ardından, yukarıdaki gibi
targetXdeğerini hesapla vecontroller.Moveile koşucuyu oraya taşı. - “Oyna”ya bas ve A ile D tuşlarını dene.
Kendin dene
using UnityEngine;
public class Runner : MonoBehaviour
{
public float laneWidth = 2.5f;
public int lane;
private CharacterController controller;
void Start()
{
controller = GetComponent<CharacterController>();
}
void Update()
{
// burada şerit değiştir
}
}
Unity Oyunu: Gökyüzü Şeritleri bölümündeki tüm dersler
Kendi başına pratik yap: Unity playground