Velocidad diagonal
Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 27 de 85.
Mantén pulsadas a la vez las flechas derecha y arriba, y los ejes sin procesar dan la dirección (1, 0, 1). Su longitud, .magnitude, es la raíz cuadrada de 1 + 1, aproximadamente 1.41. Un caminante que se mueve con ella recorre 1.41 unidades en diagonal durante el tiempo que tarda en recorrer 1 unidad en línea recta: un 41 % más rápido.
.normalized da una copia de un vector que apunta en la misma dirección y mide exactamente 1 unidad: (1, 0, 1) se convierte en aproximadamente (0.71, 0, 0.71), y (0, 0, 5) se convierte en (0, 0, 1). Multiplicado por una velocidad, se mueve a esa velocidad, sea cual sea la dirección. Esta abeja vuela hacia la flor a 2 unidades por segundo, tanto si la flor está lejos como cerca; sin .normalized, volaría más rápido cuanto más lejos estuviera la flor:
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 sigue siendo (0, 0, 0), ya que el cero no tiene dirección. v.normalized deja v como estaba; v.Normalize() cambia v directamente.
Desafío
FácilHaz que el caminante se mueva a la misma velocidad en diagonal.
- En
Update(), creaVector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));. - Suma
direction.normalized * speed * Time.deltaTimeatransform.position.
Pulsa «Jugar» y mantén pulsadas dos flechas: el caminante se mueve en diagonal sin ir más rápido que en línea recta. Después, pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Flechas o WASD: muévete a lo largo de x y z a la velocidad speed, manteniendo la misma velocidad en diagonal.
}
}
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