Menu
CoddyTech

Somando vetores

Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 24 de 85.

Um Vector3 pode ser armazenado em uma variável, e dois deles podem ser somados com +: x é somado a x, y a y e z a z. É assim que dois impulsos se combinam em um só movimento. Esta bola de praia rola para a frente a 2 unidades por segundo enquanto o vento a sopra 1 unidade por segundo para a direita:

Vector3 roll = new Vector3(0, 0, 2);
Vector3 wind = new Vector3(1, 0, 0);

void Update()
{
    Vector3 move = roll + wind;   // (1, 0, 2)
    transform.position += move * Time.deltaTime;
}

Multiplicar um vetor por um número multiplica cada uma de suas partes: wind * 3 é (3, 0, 0), uma tempestade, e move * Time.deltaTime transforma um movimento por segundo no movimento desta etapa. A subtração também funciona parte por parte, e a - b é o passo que vai do ponto b ao ponto a. Não existe * entre dois vetores: roll * wind não compila.

challenge icon

Desafio

Fácil

A correnteza leva o barco, e a seta para cima adiciona o motor dele.

  1. Em Update(), comece com Vector3 move = current;.
  2. Enquanto Input.GetKey(KeyCode.UpArrow) for verdadeiro, adicione motor a move usando +=.
  3. Adicione move * Time.deltaTime a transform.position.

Pressione “Jogar”: o barco deriva para a direita e atravessa o rio enquanto você mantém pressionada a seta para cima. Depois, pressione “Verificar”.

Experimente você mesmo

using UnityEngine;

public class Boat : MonoBehaviour
{
    public Vector3 current = new Vector3(0, 0, 0);
    public Vector3 motor = new Vector3(0, 0, 0);

    void Update()
    {
        // A correnteza sempre carrega o barco.
        // Enquanto a seta para cima estiver pressionada, o motor também empurra.
    }
}

Todas as lições de Fundamentos de Scripting no Unity

Pratique por conta própria: Playground de Unity