Karakter Pelari
Termasuk bagian Dasar-Dasar Scripting Unity dalam perjalanan Unity di Coddy. Pelajaran 75 dari 85.
Bab ini membuat game kecil, Dodge the Blocks. Kamu mengendalikan pelari di sepanjang jalur sementara balok-balok berjatuhan dari langit, dan satu sentuhan mengakhiri permainan. Seluruh game terdiri dari satu skrip, Runner, yang mendapatkan fitur baru di setiap pelajaran: mengendalikan arah, balok yang berjatuhan, membersihkannya, tabrakan, dan skor.
Fitur pertama adalah kendali arah yang tetap berada di jalur, menggunakan Mathf.Clamp(value, min, max) dari Catch the Star: fungsi ini mengembalikan min saat nilai berada di bawah rentang, max saat berada di atas rentang, dan nilai itu sendiri jika tidak. Posisi clamp itu penting. Pengukur daya ini terisi saat tombol Space ditekan, berkurang saat tombol tidak ditekan, dan selalu berada di antara 0 hingga 10:
[SerializeField] private float charge = 0f;
void Update()
{
if (Input.GetKey(KeyCode.Space))
{
charge += 4f * Time.deltaTime;
}
else
{
charge -= 2f * Time.deltaTime;
}
charge = Mathf.Clamp(charge, 0f, 10f);
transform.localScale = new Vector3(0.5f, charge, 0.5f);
}Clamp diterapkan setelah perubahan. Jika clamp diterapkan lebih dahulu, nilai bisa berakhir satu langkah melewati batas pada akhir frame, dan bilah akan digambar berdasarkan nilai itu. Mathf.Clamp juga mengembalikan angka baru, bukan mengubah variabel yang kamu berikan, jadi tetapkan kembali hasilnya ke variabel tersebut.
Tantangan
SedangMulai Dodge the Blocks: arahkan pelari di sepanjang jalurnya.
- Di dalam
Update(), salintransform.positionkeVector3 p, lalu tambahkanInput.GetAxisRaw("Horizontal") * speed * Time.deltaTimekep.x. Sumbu mentah langsung menggerakkan pelari dengan kecepatan penuh. - Tetapkan
p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);, lalutransform.position = p;.
Tekan tombol “Main”, klik game, lalu bergeraklah ke kedua ujung: pelari akan berhenti di tepi. Lalu tekan tombol “Periksa”.
Coba sendiri
using UnityEngine;
public class Runner : MonoBehaviour
{
[SerializeField] private float speed = 6f;
[SerializeField] private float laneEdge = 4f;
void Update()
{
// Gerakkan sepanjang x dengan tombol panah, lalu jaga agar x tetap di jalur
}
}
Semua pelajaran di Dasar-Dasar Scripting Unity
1Dasar-Dasar C# di Unity
Halo, UnityVariabelDesimal Memerlukan fTeks di ConsoleVariabel yang Menyimpan NilaiIf dan ElseBandingkan AngkaUlasan: Pengumpul Koin7Perulangan dan method
Ulangi dengan forPerulangan di dalam perulanganTulis methodMethod yang Mengembalikan NilaiarrayUlasan: Tangga10Menemukan Benda
Cari Berdasarkan NamaTagCari Berdasarkan TipeReferensi Lebih Baik daripada FindNull di UnityRangkuman: Koin Terdekat13Proyek: Hindari Balok
Karakter PelariBalok dari Langit2Buat Bergerak
Tempatkan KubusBergerak Setiap FrameBerputar Setiap DetikKemudikan dengan TombolRangkuman: Kemudikan Kubus5Vektor
Menjumlahkan VektorArahRuang Lokal dan DuniaKecepatan DiagonalJarak AntarobjekVector3 adalah StructRangkuman: Pilot Drone8GameObjects dan Komponen
Referensi di InspectorAmbil KomponenKomponen yang HilangTambahkan KomponenRequireComponentTampilkan dan SembunyikanRingkasan: Sakelar Lampu6Transformasi dan Hierarki
Objek Induk dan AnakKibarkan BenderaSkalaMelihat BendaBergerak Menuju TitikRekap: Bulan yang MengorbitLatihan sendiri: Playground Unity