Advertisement
Diamond32_Tutoriales

Turbulencia

May 27th, 2021
1,228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.29 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. [RequireComponent (typeof (BoxCollider))]
  6. [ExecuteInEditMode]
  7. public class Turbulencia : MonoBehaviour
  8. {
  9.  
  10.     private Vector3 originPosition;
  11.     private Quaternion originRotation;
  12.     public float shake_decay = 0.002f;
  13.     public float shake_intensity = .3f;
  14.  
  15.     private float temp_shake_intensity = 0;
  16.  
  17.     public float TimePerchangeAxis;
  18.     public Vector3 RotateForce;
  19.     public float RotateSpeed;
  20.     public bool isInZone;
  21.     [SerializeField] bool right;
  22.     [SerializeField] bool left;
  23.     public Vector3 Zonesize;
  24.     public string tag;
  25.     public bool wait;
  26.  
  27.     BoxCollider bs
  28.     {
  29.         get
  30.         {
  31.             return GetComponent <BoxCollider>();
  32.         }
  33.     }
  34.  
  35.     public Transform avion;
  36.  
  37.     public Transform camera
  38.     {
  39.         get
  40.         {
  41.             return FindObjectOfType<Camera>().transform;
  42.         }
  43.     }
  44.     public Color ZoneColor;
  45.  
  46.     private void Start()
  47.     {
  48.         StartCoroutine (VibradorDeLadoALado());
  49.        
  50.     }
  51.  
  52.     private void OnTriggerEnter(Collider other)
  53.     {
  54.         if (other.tag == tag)
  55.         {
  56.             avion = other.transform;
  57.         }
  58.     }
  59.  
  60.     private void OnTriggerExit(Collider other)
  61.     {
  62.         if (other.tag == tag)
  63.         {
  64.             avion = null;
  65.         }
  66.     }
  67.  
  68.     void Update()
  69.     {
  70.         bs.size = Zonesize;
  71.         bs.isTrigger = true;
  72.  
  73.         if (temp_shake_intensity > 0)
  74.         {
  75.             camera.position = originPosition + Random.insideUnitSphere * temp_shake_intensity;
  76.             camera.rotation = new Quaternion(
  77.                 originRotation.x + Random.Range(-temp_shake_intensity, temp_shake_intensity) * .2f,
  78.                 originRotation.y + Random.Range(-temp_shake_intensity, temp_shake_intensity) * .2f,
  79.                 originRotation.z + Random.Range(-temp_shake_intensity, temp_shake_intensity) * .2f,
  80.                 originRotation.w + Random.Range(-temp_shake_intensity, temp_shake_intensity) * .2f);
  81.                 temp_shake_intensity -= shake_decay;
  82.         }
  83.  
  84.         if (Input.GetKey (KeyCode.G))
  85.         {
  86.             //Shake();         
  87.         }
  88.  
  89.         if (avion != null)
  90.         {
  91.             Shake();
  92.             isInZone = true;
  93.         }
  94.         else
  95.         {
  96.             isInZone = false;
  97.         }
  98.  
  99.         if (right)
  100.         {
  101.             Vector3 moveForce = new Vector3(                 RotateForce.x * Time.fixedDeltaTime * RotateSpeed,
  102.                                                              RotateForce.y * Time.fixedDeltaTime * RotateSpeed,
  103.                                                              RotateForce.z * Time.fixedDeltaTime * RotateSpeed);
  104.             avion.Rotate(moveForce);
  105.         }
  106.  
  107.         if (left)
  108.         {
  109.             Vector3 moveForcedd = new Vector3(                -RotateForce.x * Time.fixedDeltaTime * RotateSpeed,
  110.                                                               -RotateForce.y * Time.fixedDeltaTime * RotateSpeed,
  111.                                                               -RotateForce.z * Time.fixedDeltaTime * RotateSpeed);
  112.             avion.Rotate(moveForcedd);
  113.         }
  114.     }
  115.  
  116.     void Shake()
  117.     {
  118.         originPosition = camera.position;
  119.         originRotation = camera.rotation;
  120.         temp_shake_intensity = shake_intensity;
  121.     }
  122.  
  123.     IEnumerator VibradorDeLadoALado()
  124.     {
  125.  
  126.         while (true)
  127.         {
  128.             if (isInZone)
  129.             {
  130.                 right = true;
  131.                 left = false;
  132.                 yield return new WaitForSeconds(TimePerchangeAxis);
  133.                 right = false;
  134.                 left = true;
  135.                 yield return new WaitForSeconds(TimePerchangeAxis);
  136.             }
  137.             yield return new WaitForSeconds(0.01f);
  138.         }
  139.     }
  140.  
  141.     public void OnDrawGizmos()
  142.     {
  143.         Gizmos.color = ZoneColor;
  144.         Gizmos.DrawCube (this.transform.position, Zonesize);
  145.     }
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement