Cosmic Strike
 
Cargando...
Buscando...
Nada coincide
CameraShake.cs
Ir a la documentación de este archivo.
1
8
9using UnityEngine;
10using System.Collections;
11
16public class CameraShake : MonoBehaviour
17{
24 public void Shake(float duration, float magnitude)
25 {
26 StopAllCoroutines(); // Detenemos cualquier sacudida en curso para evitar superposición
27 StartCoroutine(DoShake(duration, magnitude));
28 }
29
36 private IEnumerator DoShake(float duration, float magnitude)
37 {
38 Vector3 originalPos = transform.localPosition; // Guardamos la posición inicial
39 float elapsed = 0f;
40
41 while (elapsed < duration)
42 {
43 // Genera un desplazamiento aleatorio dentro de un rango [-magnitude, +magnitude]
44 float offsetX = (Random.value * 2f - 1f) * magnitude;
45 float offsetY = (Random.value * 2f - 1f) * magnitude;
46
47 // Aplica el desplazamiento a la posición local
48 transform.localPosition = originalPos + new Vector3(offsetX, offsetY, 0f);
49
50 // Avanza el tiempo transcurrido y espera al siguiente frame
51 elapsed += Time.deltaTime;
52 yield return null;
53 }
54
55 // Al terminar, restauramos la posición original para evitar acumulaciones
56 transform.localPosition = originalPos;
57 }
58}
Componente que permite aplicar un efecto de sacudida temporal a la cámara. Ideal para generar feedbac...
IEnumerator DoShake(float duration, float magnitude)
Corrutina que realiza el efecto de sacudida desplazando la cámara en valores aleatorios....
void Shake(float duration, float magnitude)
Lanza una sacudida de cámara. Interrumpe cualquier sacudida anterior y comienza una nueva.