Menu
CoddyTech

Tiga Jalur

Pelajaran 1 dari 20 dalam kursus Game Unity: Sky Lanes di Coddy.

Dalam kursus ini, kamu membangun satu game utuh, satu fitur setiap pelajaran. Seorang pelari berlomba di sepanjang jalan yang tinggi di langit. Penghalang, palang, dan tembok menghadangnya, koin berderet di jalur, dan jalan semakin cepat semakin lama kamu bertahan.

Proyek ini sudah memiliki empat skrip: Runner pada pemain, Road, GameManager, dan Coin. Saat ini, sebagian besar masih kosong dan akan diisi sedikit demi sedikit di setiap pelajaran. Skrip kelima, CameraFit pada kamera, sudah disediakan: skrip ini memperlebar pandangan pada layar ponsel yang tinggi agar ketiga jalur muat, dan kamu tidak perlu mengubahnya.

Pelari tidak pernah bergerak maju. Pelari hanya berpindah di antara tiga jalur: kiri, tengah, dan kanan. Simpan jalur sebagai bilangan bulat, -1, 0, atau 1, lalu tentukan posisinya pada sumbu x:

float targetX = lane * laneWidth;

Pelari memiliki CharacterController, jadi pelari bergerak dengan controller.Move(motion): Move menerima seberapa jauh pelari harus bergerak pada frame ini, bukan posisi akhirnya. Untuk mencapai targetX, bergeraklah sejauh selisih antara posisi tersebut dan posisi pelari saat ini:

float x = targetX;
Vector3 move = new Vector3(x - transform.position.x, 0f, 0f);
controller.Move(move);

Mathf.Max(-1, lane - 1) menghasilkan lane - 1, tetapi nilainya tidak pernah kurang dari -1, jadi tidak ada jalur di sebelah kiri jalur paling kiri.

challenge icon

Tantangan

Mudah
  1. Di Runner.Update, saat A atau tombol panah kiri ditekan (Input.GetKeyDown), atur lane = Mathf.Max(-1, lane - 1).
  2. Saat D atau tombol panah kanan ditekan, atur lane = Mathf.Min(1, lane + 1).
  3. Lalu hitung targetX dan pindahkan pelari ke sana dengan controller.Move, seperti di atas.
  4. Tekan tombol “Main” dan coba A serta D.

Coba sendiri

using UnityEngine;

public class Runner : MonoBehaviour
{
    public float laneWidth = 2.5f;

    public int lane;

    private CharacterController controller;

    void Start()
    {
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        // pindah jalur di sini
    }
}

Semua pelajaran di Game Unity: Sky Lanes

Latihan sendiri: Playground Unity