Menu
CoddyTech

Trzy tory

Lekcja 1 z 20 w kursie Gra w Unity: Podniebne tory w Coddy.

W tym kursie zbudujesz całą grę, po jednej funkcji na lekcję. Biegacz pędzi drogą wysoko wśród chmur. Pojawiają się przed nim bariery, poprzeczki i ściany, wzdłuż pasów leżą monety, a im dłużej przetrwasz, tym szybciej biegnie droga.

Projekt ma już cztery skrypty: Runner przypisany do gracza, Road, GameManager i Coin. Na razie większość z nich jest pusta i będzie uzupełniana z lekcji na lekcję. Jest też piąty skrypt, CameraFit, przypisany do kamery: poszerza widok na wysokim ekranie telefonu, tak aby zmieściły się wszystkie trzy pasy, i nie trzeba go zmieniać.

Biegacz nigdy nie porusza się do przodu. Przemieszcza się tylko między trzema pasami: lewym, środkowym i prawym. Zapisz pas jako liczbę całkowitą -1, 0 lub 1, a następnie oblicz jego położenie na osi x:

float targetX = lane * laneWidth;

Biegacz ma komponent CharacterController, więc porusza się za pomocą controller.Move(motion): Move przyjmuje odległość do pokonania w tej klatce, a nie docelowe położenie. Aby znaleźć się w targetX, przesuń go o różnicę między tą wartością a jego obecnym położeniem:

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

Mathf.Max(-1, lane - 1) zwraca lane - 1, ale nigdy wartość mniejszą niż -1, więc nie można wybrać pasa po lewej stronie lewego pasa.

challenge icon

Wyzwanie

Łatwy
  1. W metodzie Runner.Update, gdy zostanie naciśnięty klawisz A lub strzałka w lewo (Input.GetKeyDown), ustaw lane = Mathf.Max(-1, lane - 1).
  2. Gdy zostanie naciśnięty klawisz D lub strzałka w prawo, ustaw lane = Mathf.Min(1, lane + 1).
  3. Następnie oblicz targetX i przesuń tam biegacza za pomocą controller.Move, jak wyżej.
  4. Naciśnij „Graj” i wypróbuj klawisze A i D.

Spróbuj swoich sił

using UnityEngine;

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

    public int lane;

    private CharacterController controller;

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

    void Update()
    {
        // zmień tutaj pas ruchu
    }
}

Wszystkie lekcje w sekcji Gra w Unity: Podniebne tory

Poćwicz samodzielnie: Edytor online Unity