Tiga Jalur
Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 27 dari 56.
Bab ini membuat game Endless Runner. Seorang pelari berlari di jalan dengan tiga lajur dan berpindah lajur untuk menghindari rintangan yang mendekatinya. Dalam pelajaran-pelajaran berikutnya, jalan akan semakin cepat, jarak akan ditampilkan di layar, tabrakan akan mengakhiri permainan dengan tombol untuk bermain lagi, dan permainan terbaik akan disimpan. Pelari tidak pernah bergerak maju: posisinya tetap di z = 0 dan rintangan bergerak ke arahnya, sehingga jalan tidak pernah habis. Game ini memiliki empat skrip, Runner, Spawner, Obstacle dan GameManager, dan tiga skrip terakhir masih kosong untuk saat ini.
Pelari yang bergerak di antara lajur tidak dikendalikan seperti mobil: posisinya selalu berada di salah satu dari beberapa tempat. Simpan tempatnya sebagai bilangan bulat, ubah angkanya saat tombol ditekan, lalu hitung posisinya berdasarkan angka tersebut. Platform pembersih jendela ini melayani lima lantai sebuah gedung, dengan jarak 3 unit:
[SerializeField] private float floorHeight = 3f;
[SerializeField] private float moveSpeed = 6f;
private int floor = 0;
void Update()
{
if (Input.GetKeyDown(KeyCode.UpArrow)) floor++;
if (Input.GetKeyDown(KeyCode.DownArrow)) floor--;
floor = Mathf.Clamp(floor, 0, 4);
Vector3 p = transform.position;
p.y = Mathf.MoveTowards(p.y, floor * floorHeight, moveSpeed * Time.deltaTime);
transform.position = p;
}GetKeyDown membuat satu kali tekan berarti naik satu lantai, sedangkan GetKey akan menambah satu lantai pada setiap frame selama tombol ditahan. Mathf.Clamp menjaga angka tetap dalam rentang lantai gedung, sehingga menekan tombol atas saat berada di lantai teratas tidak melakukan apa pun, dan tekanan tombol bawah berikutnya langsung menuju lantai 3. Mathf.MoveTowards menggeser platform menuju lantainya dengan kecepatan moveSpeed unit per detik dan menghentikannya tepat di sana, alih-alih melompat ke sana dalam satu frame. Posisi tersebut disalin, diubah, lalu ditetapkan kembali, karena transform.position.y tidak dapat diatur sendiri.
Tantangan
SedangMulai Endless Runner dengan runner. Inspector memberikan Runner nilai laneWidth sebesar 2.5 dan laneSpeed sebesar 15, dan lane bernilai -1 untuk jalur kiri, 0 untuk jalur tengah, dan 1 untuk jalur kanan. Di dalam Update() milik Runner:
- Setiap kali tombol panah kiri atau kanan ditekan,
laneberubah satu angka ke arah tersebut. Menahan tombol tetap hanya mengubahnya satu angka. lanetidak pernah kurang dari -1 atau lebih dari 1.- Runner meluncur di sepanjang sumbu x menuju
lane * laneWidthdengan kecepatanlaneSpeedunit per detik, dan mempertahankan nilai y dan z.
Untuk saat ini, biarkan tiga script lainnya seperti semula. Tekan Play, klik game dan ganti jalur, lalu tekan Check.
Coba sendiri
using UnityEngine;
public class Runner : MonoBehaviour
{
public float laneWidth = 2.5f;
public float laneSpeed = 15f;
private int lane = 0; // -1 adalah lajur kiri, 0 lajur tengah, 1 lajur kanan
void Update()
{
// Pindah lajur dengan tombol panah, lalu geser ke koordinat x lajur tersebut
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Membangun Game Sungguhan
4Scene dan Level
Muat SceneMulai Ulang LevelLevel BerikutnyaPertahankan Antar-SceneRekap: Pilih Level10Proyek: Platformer 3D
LintasanPlatform Bergerak2Tombol dan Layar
Tombol dan onClickLambdaMenghubungkan di InspectorPanel Aktif dan NonaktifBilah KesehatanRangkuman: Toko Upgrade5Menyimpan dengan PlayerPrefs
Simpan AngkaMuat dengan Nilai DefaultSkor TertinggiSimpan PengaturanUlasan: Koin di Bank3Pengelola Game
Satu Skrip Menjalankan GameSingletonStatus GamePercabangan Berdasarkan StatusUlasan: Pengelola Ronde6Proyek: Pelari Tanpa Akhir
Tiga JalurRintangan di Depan