Distância entre objetos
Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 28 de 85.
Vector3.Distance(a, b) é a distância entre dois pontos, em unidades, medida em linha reta pelos três eixos. É o comprimento do passo entre eles, (a - b).magnitude, então a ordem de a e b não importa. De (0, 0, 0) até (3, 0, 4), a distância é 5.
Compare uma distância com um número e um script saberá quando algo está perto. Este campista só consegue aquecer as mãos a até 4 unidades da fogueira, cuja posição é definida pelo Inspector:
public Vector3 campfire = new Vector3(3, 0, 4);
void Update()
{
float d = Vector3.Distance(transform.position, campfire);
if (d < 4f && Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("You warm your hands");
}
}A distância também conta a altura: um campista 5 unidades acima da fogueira está a 5 unidades dela, não a 0. Quando a altura não deve contar, compare dois pontos com o mesmo y.
Desafio
FácilReduza a velocidade do personagem pela metade no pântano.
- Abaixo de
float s = speed;, escrevaif (Vector3.Distance(transform.position, swamp) < 3f). - Dentro dele, defina
s = speed / 2;. Deixe o campospeede as linhas de movimento como estão.
Pressione “Jogar” e caminhe direto pelo pântano: o personagem desacelera nele. Depois, pressione “Verificar”.
Experimente você mesmo
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
public Vector3 swamp = new Vector3(0, 0.5f, 0);
void Update()
{
float s = speed;
// A até 3 unidades do pântano, mova-se à metade da velocidade.
Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
transform.position += direction.normalized * s * Time.deltaTime;
}
}
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