Pada awalnya, tambahkan skrip baru ke karakter Anda. Beri nama PlayerMovement Script. Pertama kita membutuhkan referensi dari Player Movement Script ke Character Controller. Script disuruh menggerakkan karakter.
Pada awalnya kita membuat sebuah variabel:
pengontrol CharacterController2D publik;
Kemudian Anda memiliki opsi untuk menyeret pengontrol karakter ke ruang kosong.
Arah dan kecepatan gerakan harus ditentukan untuk gerakan tersebut. Untuk ini, Anda memerlukan masukan dari pemain:
Tombol panah kiri atau A = 1
Tombol panah kanan atau D = -1
Itu sama dengan pengontrol.
horizontalMove = Input.GetAxisRaw("Horizontal");
Area pembaruan mengatur input dari pemutar.
FixedUpdate digunakan untuk fisika. Fungsi ini diperlukan.
Buat variabel lain:
float horizontalBergerak = 0f;
FixedUpdate memindahkan karakter.
batal Pembaruan Tetap ()
{
controller.Move (horizontalMove, false, false);
}
Salah pertama berarti bahwa pemain tidak boleh berjongkok dan yang kedua untuk itu dia tidak boleh melompat.
Definisi untuk Pindah diperlukan dalam Skrip Pengontrol Pemutar:
public void Move (gerakan melayang, bool crouch, bool jump)
{}
Sebagai variabel berikutnya yang Anda butuhkan:
kecepatan lari pelampung publik = 40f;
Input dari pemain dikalikan dengan kecepatan lari:
horizontalMove = Input.GetAxisRaw ("Horizontal") * runSpeed;
Jika pemain bergerak ke kiri dan ke kanan, langkahnya akan berada di -40 dan 40.
Pergerakan juga dikalikan dengan Time.fixedDeltaTime.
Time.fixedDeltaTime adalah waktu sejak fungsi FixedUpdate terakhir dipanggil. Ini menentukan bahwa gerakan terjadi dengan jumlah yang sama, terlepas dari seberapa sering fungsi dipanggil. Dengan demikian, kecepatan karakternya sama, apa pun sistem atau platformnya.
Jika pion jatuh, ia bisa bergeser sedikit ke tanah.
Itulah sebabnya di Rigidbody2D deteksi tabrakan berubah dari diskrit menjadi kontinu.
Untuk melompat, diperiksa apakah kita menekan tombol lompat atau tidak:
jika (input.GetButtonDown ("Lompat"))
{
lompat = benar;
}
Ini juga harus dilakukan dalam fungsi FixedUpdate. Informasi tersebut ditransfer dengan variabel Boolean:
lompat bool = salah;
Variabel lompat juga ditambahkan di bawah FixedUpdate.
Saat tombol lompat ditekan, skrip PlayerMovement meneruskan ke pengontrol yang ingin kita lompat. Setelah itu akan lagi
lompat = salah;
Ini perlu didefinisikan karena kita tidak ingin melompat ke depan selamanya.
Masalah lainnya adalah ketika karakter mencoba untuk melompat ke platform, ia terjebak di sana. Karakter kemudian harus meluncur ke bawah dan jatuh di atasnya. Untuk itu diperlukan materi fisika. Di bawah Proyek, klik kanan Buat–> PhysicsMaterial2D
Sebut saja Slippery. Atur Friction dan Bounciness ke 0. Ambil PhysicsMaterial dan seret ke material dari BoxCollider pemain.
Jika Anda telah menetapkan beberapa penumbuk untuk protagonis, Anda juga dapat menetapkan materi fisika ke penumbuk lainnya.
Tata letak keyboard ditentukan melalui Unity InputManager. Anda dapat menemukan ini di bawah Pengaturan Proyek.
Klik kanan tombol lompat dan pilih Elemen Array Duplikat. Beri nama "Crouch".
Jika pemain ingin bermain dengan tombol panah, cukup tentukan tombol alternatif.
Ulangi langkah-langkah dari melompat ke berjongkok:
Saat tombol berjongkok dilepaskan, karakter juga harus berhenti berjongkok. Jadi itu tidak bekerja seperti melompat. Jika pemain ingin bermain dengan tombol panah, cukup tentukan tombol alternatif.
Tambahkan yang berikut ini dalam fungsi pembaruan:
else if (Input.GetButtonUp ("Crouch"))
{
jongkok = salah;
}
Agar bagian yang sesuai muncul di pengontrol karakter, Anda harus mengubahnya dari pribadi ke publik:
Tarik itu Collideryang harus dinonaktifkan di bidang yang sesuai. Jika ada “langit-langit” di atas Anda, karakter Anda akan melambat saat Anda menekan tombol jongkok.