Cosmic Strike
 
Cargando...
Buscando...
Nada coincide
Referencia de la clase ErraticMovement

Componente que aplica movimiento errático con rotación suave a un objeto. Cambia de dirección al azar cada pocos segundos o al llegar a los márgenes de pantalla. Limita el movimiento dentro de una región del viewport, permitiendo que el objeto salga solo por abajo. Más...

+ Diagrama de herencia de ErraticMovement
+ Diagrama de colaboración de ErraticMovement:

Atributos públicos

float speed = 2f
 Velocidad de desplazamiento del objeto, medida en unidades de Unity por segundo.
 
float changeInterval = 3f
 Intervalo en segundos tras el cual el objeto elige una nueva dirección aleatoria.
 
float minX = 0.04f
 Límite izquierdo en coordenadas normalizadas de pantalla (0 = borde izquierdo, 1 = borde derecho).
 
float maxX = 0.96f
 Límite derecho en coordenadas normalizadas de pantalla.
 
float maxY = 0.94f
 Límite superior en coordenadas normalizadas (1 = parte superior de la pantalla). Si se supera, se fuerza un cambio de dirección.
 
float rotationSpeed = 500f
 Velocidad máxima a la que puede girar el objeto para alinearse con su nueva dirección, expresada en grados por segundo.
 

Métodos privados

void Start ()
 Método de inicialización de Unity. Se ejecuta al comenzar la escena o activar el objeto.
 
void Update ()
 Método que se ejecuta en cada frame. Controla el movimiento, cambio de dirección, detección de colisiones con los bordes y rotación hacia la dirección actual.
 
void PickNewDirection ()
 Selecciona una nueva dirección aleatoria en el plano XY. El ángulo se elige en un rango completo de 360 grados.
 
void AlignRotation (Vector2 dir)
 Rota el objeto suavemente para que su eje "up" apunte en la dirección indicada. Usa Quaternion.RotateTowards para interpolar la rotación con una velocidad máxima.
 

Atributos privados

Vector2 moveDirection
 Dirección actual de movimiento del objeto, como vector normalizado.
 
float timer
 Cronómetro interno que controla cuándo cambiar la dirección de movimiento.
 
Transform myTransform
 Referencia local al Transform del objeto (para optimizar acceso repetido).
 
Camera myCamera
 Referencia a la cámara principal, usada para convertir entre mundo y viewport.
 

Descripción detallada

Componente que aplica movimiento errático con rotación suave a un objeto. Cambia de dirección al azar cada pocos segundos o al llegar a los márgenes de pantalla. Limita el movimiento dentro de una región del viewport, permitiendo que el objeto salga solo por abajo.

Definición en la línea 16 del archivo ErraticMovement.cs.

Documentación de funciones miembro

◆ AlignRotation()

void ErraticMovement.AlignRotation ( Vector2 dir)
inlineprivate

Rota el objeto suavemente para que su eje "up" apunte en la dirección indicada. Usa Quaternion.RotateTowards para interpolar la rotación con una velocidad máxima.

Parámetros
dirDirección hacia la que se alineará el objeto visualmente.

Definición en la línea 153 del archivo ErraticMovement.cs.

154 {
155 if (dir.sqrMagnitude < 0.001f) return; // Si la dirección es casi cero, no se rota
156
157 // Calcula el ángulo deseado en grados
158 float targetAngle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg - 90f;
159 Quaternion targetRot = Quaternion.Euler(0f, 0f, targetAngle);
160
161 // Aplica rotación suavizada hacia el ángulo objetivo
162 myTransform.rotation = Quaternion.RotateTowards(
163 myTransform.rotation,
164 targetRot,
165 rotationSpeed * Time.deltaTime
166 );
167 }
Transform myTransform
Referencia local al Transform del objeto (para optimizar acceso repetido).
float rotationSpeed
Velocidad máxima a la que puede girar el objeto para alinearse con su nueva dirección,...

Hace referencia a myTransform y rotationSpeed.

Referenciado por Start() y Update().

+ Gráfico de llamadas a esta función:

◆ PickNewDirection()

void ErraticMovement.PickNewDirection ( )
inlineprivate

Selecciona una nueva dirección aleatoria en el plano XY. El ángulo se elige en un rango completo de 360 grados.

Definición en la línea 142 del archivo ErraticMovement.cs.

143 {
144 float angleRad = Random.Range(0f, 360f) * Mathf.Deg2Rad;
145 moveDirection = new Vector2(Mathf.Cos(angleRad), Mathf.Sin(angleRad)).normalized;
146 }
Vector2 moveDirection
Dirección actual de movimiento del objeto, como vector normalizado.

Hace referencia a moveDirection.

Referenciado por Start() y Update().

+ Gráfico de llamadas a esta función:

◆ Start()

void ErraticMovement.Start ( )
inlineprivate

Método de inicialización de Unity. Se ejecuta al comenzar la escena o activar el objeto.

Definición en la línea 92 del archivo ErraticMovement.cs.

93 {
94 myTransform = transform; // Se guarda el transform local para eficiencia
95 myCamera = Camera.main; // Se accede a la cámara principal
96 PickNewDirection(); // Selecciona una dirección inicial aleatoria
97 timer = 0f; // Inicializa el temporizador
98 AlignRotation(moveDirection); // Ajusta rotación al inicio según dirección elegida
99 }
void AlignRotation(Vector2 dir)
Rota el objeto suavemente para que su eje "up" apunte en la dirección indicada. Usa Quaternion....
float timer
Cronómetro interno que controla cuándo cambiar la dirección de movimiento.
Camera myCamera
Referencia a la cámara principal, usada para convertir entre mundo y viewport.
void PickNewDirection()
Selecciona una nueva dirección aleatoria en el plano XY. El ángulo se elige en un rango completo de 3...

Hace referencia a AlignRotation(), moveDirection, myCamera, myTransform, PickNewDirection() y timer.

+ Gráfico de llamadas de esta función:

◆ Update()

void ErraticMovement.Update ( )
inlineprivate

Método que se ejecuta en cada frame. Controla el movimiento, cambio de dirección, detección de colisiones con los bordes y rotación hacia la dirección actual.

Definición en la línea 105 del archivo ErraticMovement.cs.

106 {
107 // 1) Avanza el temporizador y cambia de dirección si ha pasado el intervalo definido
108 timer += Time.deltaTime;
109 if (timer >= changeInterval)
110 {
112 timer = 0f;
113 }
114
115 // 2) Aplica el movimiento en el mundo usando la dirección actual
116 myTransform.Translate(moveDirection * speed * Time.deltaTime, Space.World);
117
118 // 3) Convierte posición mundial a coordenadas del viewport para verificar los bordes
119 Vector3 vp = myCamera.WorldToViewportPoint(myTransform.position);
120 bool hitSide = vp.x <= minX || vp.x >= maxX; // ¿Tocó borde izquierdo o derecho?
121 bool hitTop = vp.y >= maxY; // ¿Tocó el borde superior?
122
123 if (hitSide || hitTop)
124 {
125 // Cambio inmediato de dirección si toca los bordes definidos
127
128 // Ajusta la posición para que no se salga visualmente del área permitida
129 vp.x = Mathf.Clamp(vp.x, minX, maxX);
130 if (vp.y > maxY) vp.y = maxY;
131 myTransform.position = myCamera.ViewportToWorldPoint(vp);
132 }
133
134 // 4) Gira suavemente el objeto hacia la dirección actual
136 }
float speed
Velocidad de desplazamiento del objeto, medida en unidades de Unity por segundo.
float minX
Límite izquierdo en coordenadas normalizadas de pantalla (0 = borde izquierdo, 1 = borde derecho).
float maxX
Límite derecho en coordenadas normalizadas de pantalla.
float maxY
Límite superior en coordenadas normalizadas (1 = parte superior de la pantalla). Si se supera,...
float changeInterval
Intervalo en segundos tras el cual el objeto elige una nueva dirección aleatoria.

Hace referencia a AlignRotation(), changeInterval, maxX, maxY, minX, moveDirection, myCamera, myTransform, PickNewDirection(), speed y timer.

+ Gráfico de llamadas de esta función:

Documentación de datos miembro

◆ changeInterval

float ErraticMovement.changeInterval = 3f

Intervalo en segundos tras el cual el objeto elige una nueva dirección aleatoria.

Definición en la línea 31 del archivo ErraticMovement.cs.

Referenciado por Update().

◆ maxX

float ErraticMovement.maxX = 0.96f

Límite derecho en coordenadas normalizadas de pantalla.

Definición en la línea 47 del archivo ErraticMovement.cs.

Referenciado por Update().

◆ maxY

float ErraticMovement.maxY = 0.94f

Límite superior en coordenadas normalizadas (1 = parte superior de la pantalla). Si se supera, se fuerza un cambio de dirección.

Definición en la línea 54 del archivo ErraticMovement.cs.

Referenciado por Update().

◆ minX

float ErraticMovement.minX = 0.04f

Límite izquierdo en coordenadas normalizadas de pantalla (0 = borde izquierdo, 1 = borde derecho).

Definición en la línea 41 del archivo ErraticMovement.cs.

Referenciado por Update().

◆ moveDirection

Vector2 ErraticMovement.moveDirection
private

Dirección actual de movimiento del objeto, como vector normalizado.

Definición en la línea 72 del archivo ErraticMovement.cs.

Referenciado por PickNewDirection(), Start() y Update().

◆ myCamera

Camera ErraticMovement.myCamera
private

Referencia a la cámara principal, usada para convertir entre mundo y viewport.

Definición en la línea 87 del archivo ErraticMovement.cs.

Referenciado por Start() y Update().

◆ myTransform

Transform ErraticMovement.myTransform
private

Referencia local al Transform del objeto (para optimizar acceso repetido).

Definición en la línea 82 del archivo ErraticMovement.cs.

Referenciado por AlignRotation(), Start() y Update().

◆ rotationSpeed

float ErraticMovement.rotationSpeed = 500f

Velocidad máxima a la que puede girar el objeto para alinearse con su nueva dirección, expresada en grados por segundo.

Definición en la línea 65 del archivo ErraticMovement.cs.

Referenciado por AlignRotation().

◆ speed

float ErraticMovement.speed = 2f

Velocidad de desplazamiento del objeto, medida en unidades de Unity por segundo.

Definición en la línea 25 del archivo ErraticMovement.cs.

Referenciado por Update().

◆ timer

float ErraticMovement.timer
private

Cronómetro interno que controla cuándo cambiar la dirección de movimiento.

Definición en la línea 77 del archivo ErraticMovement.cs.

Referenciado por Start() y Update().


La documentación de esta clase está generada del siguiente archivo: