Menu
CoddyTech

Przestrzeń lokalna i globalna

Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 26 z 85.

Obiekt ma własne kierunki, a także kierunki świata. transform.forward wskazuje kierunek, w którym zwrócony jest przód obiektu (niebieska strzałka w widoku Scene w Unity), wyrażony jako wektor świata o długości jednej jednostki; transform.right i transform.up wskazują jego własne kierunki w prawo i w górę. Obróć obiekt, a te kierunki obrócą się razem z nim. Ten papierowy samolot jest obrócony w scenie o 90 stopni wokół osi y, więc leci wzdłuż osi x świata, w kierunku, w którym jest zwrócony:

public float speed = 4f;

void Update()
{
    transform.position += transform.forward * speed * Time.deltaTime;
}

transform.Translate(Vector3.forward * speed * Time.deltaTime) robi to samo, ponieważ Translate interpretuje wektor w układzie współrzędnych obiektu: w tym układzie Vector3.forward oznacza kierunek, w którym zwrócony jest przód obiektu. Przekaż Space.World jako drugi argument, a zostaną użyte osie świata, więc transform.Translate(Vector3.forward * speed * Time.deltaTime, Space.World) przesuwa obiekt wzdłuż osi z świata, niezależnie od tego, w którą stronę zwrócony jest samolot.

transform.Rotate również obraca obiekt wokół jego własnych osi. Patrząc z góry, dodatni kąt wokół osi y obraca pionowo ustawiony obiekt w prawo, a ujemny — w lewo; jego transform.forward obraca się razem z nim.

challenge icon

Wyzwanie

Łatwy

Zapewnij czołgowi sterowanie typowe dla czołgu: obracanie się w miejscu i jazdę w kierunku, w którym jest zwrócony.

  1. W Update(), gdy trzymasz strzałkę w prawo, użyj transform.Rotate(0, turn * Time.deltaTime, 0);, a dla strzałki w lewo użyj -turn.
  2. Gdy trzymasz strzałkę w górę, użyj transform.Translate(Vector3.forward * speed * Time.deltaTime);.

Naciśnij „Graj”, obracaj się i jedź: czołg porusza się w kierunku, w którym jest zwrócony. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class Tank : MonoBehaviour
{
    public float speed = 3f;
    public float turn = 90f;

    void Update()
    {
        // Strzałki w prawo/lewo: obracają wokół osi y. Strzałka w górę: jedzie w kierunku, w którym zwrócony jest czołg.
    }
}

Wszystkie lekcje w sekcji Podstawy skryptów w Unity

Poćwicz samodzielnie: Edytor online Unity