Velocidade diagonal
Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 27 de 85.
Mantenha pressionadas as setas para a direita e para cima ao mesmo tempo, e os eixos brutos fornecem a direção (1, 0, 1). Seu comprimento, .magnitude, é a raiz quadrada de 1 + 1, cerca de 1.41. Um caminhante que se move com esse vetor percorre 1.41 unidades na diagonal no mesmo tempo em que percorre 1 unidade em linha reta: 41% mais rápido.
.normalized fornece uma cópia de um vetor que aponta na mesma direção e tem exatamente 1 unidade de comprimento: (1, 0, 1) se torna aproximadamente (0.71, 0, 0.71), e (0, 0, 5) se torna (0, 0, 1). Multiplicado por uma velocidade, ele se move nessa velocidade em qualquer direção. Esta abelha voa em direção à flor a 2 unidades por segundo, esteja a flor longe ou perto; sem .normalized, ela voaria mais rápido quanto mais longe a flor estivesse:
public Vector3 flower = new Vector3(4, 1, 3);
public float speed = 2f;
void Update()
{
Vector3 toFlower = flower - transform.position;
transform.position += toFlower.normalized * speed * Time.deltaTime;
}Vector3.zero.normalized permanece (0, 0, 0), pois zero não tem direção. v.normalized deixa v como estava; v.Normalize() altera o próprio v.
Desafio
FácilFaça o personagem se mover na diagonal na mesma velocidade.
- Em
Update(), crieVector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));. - Adicione
direction.normalized * speed * Time.deltaTimeatransform.position.
Pressione “Jogar” e mantenha duas setas pressionadas: o personagem se move na diagonal sem ficar mais rápido do que em linha reta. Depois, clique em “Verificar”.
Experimente você mesmo
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Setas ou WASD: mova-se ao longo de x e z na velocidade speed, mantendo a mesma velocidade nas diagonais.
}
}
Todas as lições de Fundamentos de Scripting no Unity
1Fundamentos de C# no Unity
Olá, UnityVariáveisDecimais precisam de um fTexto no ConsoleVariáveis que guardam valoresIf e ElseComparar númerosRevisão: Coletor de Moedas7Laços e Métodos
Repita com forLaços dentro de laçosEscreva um métodoMétodos que respondemArraysRevisão: Escada10Encontrando coisas
Buscar pelo nomeTagsBuscar por tipoReferências são melhores que FindO null do UnityRevisão: moeda mais próxima13Projeto: Desvie dos Blocos
O CorredorBlocos do Céu2Faça-o se mover
Posicione o cuboMova a cada quadroGire a cada segundoDirija com as teclasRecapitulando: dirija o cubo5Vetores
Somando vetoresDireçõesEspaço local e globalVelocidade diagonalDistância entre objetosVector3 é uma structRevisão: piloto de drone8GameObjects e Componentes
Referências no InspectorObter um componenteComponentes ausentesAdicionar um componenteRequireComponentMostrar e ocultarRevisão: Interruptor de luz6Transformações e hierarquia
Pais e filhosIçar a bandeiraEscalaOlhar para as coisasMover-se em direção a um pontoRevisão: Lua em órbita9Projeto: Pegue a Estrela
O PegadorUma Estrela CadentePratique por conta própria: Playground de Unity