Distancia entre objetos
Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 28 de 85.
Vector3.Distance(a, b) indica a qué distancia están dos puntos, en unidades, medida en línea recta a través de los tres ejes. Es la longitud del paso entre ellos, (a - b).magnitude, así que el orden de a y b no importa. De (0, 0, 0) a (3, 0, 4) hay 5 unidades.
Compara una distancia con un número y un script sabrá cuándo algo está cerca. Este campista solo puede calentarse las manos a menos de 4 unidades de la fogata, cuya posición se establece en el 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");
}
}La distancia también cuenta la altura: un campista que esté 5 unidades por encima del fuego está a 5 unidades de él, no a 0. Cuando la altura no deba contar, compara dos puntos con el mismo valor de y.
Desafío
FácilReduce la velocidad del caminante a la mitad en el pantano.
- Debajo de
float s = speed;, escribeif (Vector3.Distance(transform.position, swamp) < 3f). - Dentro, asigna
s = speed / 2;. Deja el campospeedy las líneas de movimiento tal como están.
Pulsa «Jugar» y camina directamente por el pantano: el caminante reduce la velocidad allí. Después, pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
public Vector3 swamp = new Vector3(0, 0.5f, 0);
void Update()
{
float s = speed;
// Si estás a menos de 3 unidades del pantano, muévete a la mitad de la velocidad.
Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
transform.position += direction.normalized * s * Time.deltaTime;
}
}
Todas las lecciones de Fundamentos de scripting en Unity
1Conceptos básicos de C# en Unity
Hola, UnityVariablesLos decimales necesitan una fTexto en la consolaVariables que recuerdanIf y ElseComparar númerosRepaso: Recolector de monedas7Bucles y métodos
Repetir con forBucles dentro de buclesEscribir un métodoMétodos que respondenArraysRepaso: escalera10Encontrar cosas
Buscar por nombreEtiquetasBuscar por tipoLas referencias vencen a FindEl null de UnityRepaso: moneda más cercana13Proyecto: Esquiva los bloques
El corredorBloques desde el cielo2Haz que se mueva
Coloca el cuboMuévelo en cada fotogramaGira cada segundoDirige con las teclasRepaso: conduce el cubo5Vectores
Sumar vectoresDireccionesEspacio local y mundialVelocidad diagonalDistancia entre objetosVector3 es una estructuraRepaso: piloto de dron8GameObjects y componentes
Referencias en el InspectorObtener un componenteComponentes faltantesAñadir un componenteRequireComponentMostrar y ocultarRepaso: interruptor de luz3El Inspector
Campos del InspectorSerializeFieldFloats y MathfAtributos del InspectorRepaso: Ascensor6Transformaciones y jerarquía
Padres e hijosIza la banderaEscalaMira las cosasMuévete hacia un puntoRepaso: Luna en órbita9Proyecto: Atrapa la estrella
El cazadorUna estrella fugaz12El ciclo de vida de un script
Awake y StartUpdate y LateUpdateOnEnable y OnDisableEl orden del ciclo de vidaRepaso: registrador del ciclo de vidaPractica por tu cuenta: Playground de Unity