Advertisement
maujogador

Suns' Tornado

Aug 9th, 2016
278
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.31 KB | None | 0 0
  1. using ExitGames.Client.Photon;
  2. using Photon;
  3. using System;
  4. using System.Collections;
  5. using System.Runtime.InteropServices;
  6. using UnityEngine;
  7. using Xft;
  8.  
  9. public class Tornado : UnityEngine.MonoBehaviour
  10. {
  11.     public float a = 0f;
  12.     public GameObject[] tornado = new GameObject[50];
  13.     public bool activetornado = false;
  14.     public GameObject maintornado = null;
  15.     public GameObject main_object = null;
  16.     public float timeA = 0f;
  17.     public float timeB = 0f;
  18.     public float timeC = 0f;
  19.  
  20.     public bool CanMove(int number)
  21.     {
  22.         if (number == 0)
  23.         {
  24.             if (Time.time - timeA > 1f)
  25.             {
  26.                 timeA = Time.time;
  27.                 return true;
  28.             }
  29.             else
  30.                 return false;
  31.         }
  32.         else if (number == 1)
  33.         {
  34.             if (Time.time - timeB > 2f)
  35.             {
  36.                 timeB = Time.time;
  37.                 return true;
  38.             }
  39.             else
  40.                 return false;
  41.         }
  42.         else
  43.         {
  44.             if (Time.time - timeC > 3f)
  45.             {
  46.                 timeC = Time.time;
  47.                 return true;
  48.             }
  49.             else
  50.                 return false;
  51.         }
  52.     }
  53.  
  54.     public void GetMainObject(GameObject ojf)
  55.     {
  56.         this.main_object = ojf;
  57.     }
  58.  
  59.     public void LateUpdate()
  60.     {
  61.         if (Input.GetKeyDown(KeyCode.Alpha7))
  62.         {
  63.             if (activetornado)
  64.             {
  65.                 for (int z = 0; z < 50; z++)
  66.                 {
  67.                     PhotonNetwork.Destroy(tornado[z]);
  68.                     tornado[z] = null;
  69.                 }
  70.             }
  71.             MakeTornado();
  72.         }
  73.         if (Input.GetKeyDown(KeyCode.Alpha8))
  74.         {
  75.             for (int z = 0; z < 50; z++)
  76.             {
  77.                 PhotonNetwork.Destroy(tornado[z]);
  78.                 tornado[z] = null;
  79.             }
  80.             activetornado = false;
  81.         }
  82.         if (activetornado)
  83.         {
  84.             GameObject[] pl = GameObject.FindGameObjectsWithTag("Player");
  85.             GameObject[] ti = GameObject.FindGameObjectsWithTag("titan");
  86.             for (int z = 0; z < pl.Length; z++)
  87.             {
  88.                 if (pl[z] != main_object && !pl[z].GetComponent<Tornado>())
  89.                 {
  90.                     Vector3 direction = maintornado.transform.position + new Vector3(0f, 25f, 0f) - pl[z].transform.position;
  91.                     direction.Normalize();
  92.                     float multiplier = 0;
  93.                     if (Vector3.Distance(pl[z].transform.position, maintornado.transform.position + new Vector3(0f, 25f, 0f)) > 40)
  94.                     {
  95.                         multiplier = (Vector3.Distance(pl[z].transform.position, maintornado.transform.position + new Vector3(0f, 25f, 0f)) * -1 + 400f) / 180;
  96.                     }
  97.                     else
  98.                     {
  99.                         multiplier = (Vector3.Distance(pl[z].transform.position, maintornado.transform.position + new Vector3(0f, 25f, 0f)) * -1 + 400f) / 1200;
  100.                     }
  101.                     if (multiplier > 0)
  102.                     {
  103.                         if (pl[z].transform.position.y < maintornado.transform.position.y + 4f && Vector3.Distance(pl[z].transform.position, maintornado.transform.position + new Vector3(0f, 25f, 0f)) < 100)
  104.                         {
  105.                             pl[z].GetComponent<HERO>().photonView.RPC("blowAway", PhotonTargets.All, new object[] { new Vector3(0f, 2f, 0f) });
  106.                         }
  107.                         if (pl[z].transform.position.y < maintornado.transform.position.y + 25f)
  108.                         {
  109.                             pl[z].GetComponent<HERO>().photonView.RPC("blowAway", PhotonTargets.All, new object[] { Vector3.Scale(direction, new Vector3(multiplier, multiplier, multiplier)) });
  110.                         }
  111.                         else
  112.                         {
  113.                             pl[z].GetComponent<HERO>().photonView.RPC("blowAway", PhotonTargets.All, new object[] { Vector3.Scale(direction, new Vector3(multiplier, 0f, multiplier)) });
  114.                         }
  115.                     }
  116.                 }
  117.  
  118.  
  119.                 if (ti[z] != main_object && ti[z].GetComponent<TITAN>())
  120.                 {
  121.                     Vector3 direction = maintornado.transform.position + new Vector3(0f, 45f, 0f) - ti[z].transform.position;
  122.                     direction.Normalize();
  123.                     float multiplier = 0;
  124.                     if (Vector3.Distance(ti[z].transform.position, maintornado.transform.position + new Vector3(0f, 45f, 0f)) > 40)
  125.                     {
  126.                         multiplier = (Vector3.Distance(ti[z].transform.position, maintornado.transform.position + new Vector3(0f, 45f, 0f)) * -1 + 450f) / 90;
  127.                     }
  128.                     else
  129.                     {
  130.                         multiplier = (Vector3.Distance(ti[z].transform.position, maintornado.transform.position + new Vector3(0f, 45f, 0f)) * -1 + 450f) / 500;
  131.                     }
  132.                     if (multiplier > 0)
  133.                     {
  134.                         if (ti[z].transform.position.y < maintornado.transform.position.y + 45f && Vector3.Distance(ti[z].transform.position, maintornado.transform.position + new Vector3(0f, 45f, 0f)) < 100)
  135.                         {
  136.                             ti[z].transform.Translate(new Vector3(0f, 2f, 0f));
  137.                         }
  138.                         if (ti[z].transform.position.y < maintornado.transform.position.y + 45f)
  139.                         {
  140.                             ti[z].transform.Translate(Vector3.Scale(direction, new Vector3(multiplier, multiplier, multiplier)));
  141.                         }
  142.                         else
  143.                         {
  144.                             ti[z].transform.Translate(Vector3.Scale(direction, new Vector3(multiplier, 0f, multiplier)));
  145.                         }
  146.                         if (Vector3.Distance(ti[z].transform.position, maintornado.transform.position + new Vector3(0f, 25f, 0f)) < 50)
  147.                         {
  148.                             ti[z].transform.RotateAround(maintornado.transform.position, Vector3.up, UnityEngine.Random.Range(10, 200) * Time.deltaTime);
  149.                         }
  150.                     }
  151.                 }
  152.             }
  153.         }
  154.     }
  155.  
  156.     public void MakeTornado()
  157.     {
  158.         GameObject[] titns = GameObject.FindGameObjectsWithTag("titan");
  159.         GameObject[] ntitans = new GameObject[titns.Length];
  160.         Transform[] mytitns = new Transform[titns.Length];
  161.         for (int z = 0; z < titns.Length; z++)
  162.         {
  163.             mytitns[z] = titns[z].transform;
  164.             PhotonNetwork.Destroy(titns[z]);
  165.             ntitans[z] = PhotonNetwork.Instantiate("TITAN_VER3.1", mytitns[z].position, mytitns[z].rotation, 0);
  166.             ntitans[z].rigidbody.mass /= 5;
  167.         }
  168.         this.maintornado = GameObject.CreatePrimitive(PrimitiveType.Capsule);
  169.         maintornado.transform.position = this.main_object.transform.position + new Vector3(0f, 1f, 0f);
  170.         maintornado.AddComponent<ParticleSystem>();
  171.         maintornado.AddComponent<ParticleAnimator>();
  172.         maintornado.GetComponent<ParticleSystem>().emissionRate = 10f;
  173.         maintornado.GetComponent<ParticleSystem>().startSize = 2f;
  174.         maintornado.GetComponent<ParticleSystem>().renderer.material.mainTexture = GameObject.Find("Chatroom").GetComponent<InRoomChat>().tex;
  175.         maintornado.GetComponent<ParticleSystem>().renderer.material.color = Color.clear;
  176.         maintornado.GetComponent<ParticleSystem>().renderer.material.mainTexture = GameObject.Find("Chatroom").GetComponent<InRoomChat>().tex;
  177.         maintornado.GetComponent<ParticleAnimator>().particleSystem.emissionRate = 1100f;
  178.         maintornado.GetComponent<ParticleAnimator>().particleSystem.startSpeed = 200f;
  179.         maintornado.transform.Rotate(-90f, 0f, 0f);
  180.         activetornado = true;
  181.     }
  182.  
  183.     public void Start()
  184.     {
  185.         timeA = Time.time;
  186.         timeB = Time.time;
  187.         timeC = Time.time;
  188.     }
  189.  
  190.     public void Update()
  191.     {
  192.         if (maintornado != null)
  193.         {
  194.             maintornado.GetComponent<ParticleSystem>().Play();
  195.             RaycastHit hit;
  196.             int way = UnityEngine.Random.Range(0, 10);
  197.             if (Physics.Raycast(maintornado.transform.position, maintornado.transform.up * -1, out hit))
  198.             {
  199.             }
  200.             if (Physics.Raycast(maintornado.transform.position, maintornado.transform.up * -1, out hit))
  201.             {
  202.             }
  203.  
  204.             if (CanMove(1))
  205.             {
  206.                 if (way >= 5)
  207.                 {
  208.                     maintornado.transform.Rotate(0f, 0f, -30f);
  209.                 }
  210.                 else
  211.                 {
  212.                     maintornado.transform.Rotate(0f, 0f, 20f);
  213.                 }
  214.             }
  215.             if (Physics.Raycast(maintornado.transform.position, maintornado.transform.up * -1, out hit))
  216.             {
  217.                 if (hit.distance > 5f)
  218.                 {
  219.                     maintornado.transform.position = maintornado.transform.position + maintornado.transform.up * -1 / 3;
  220.                 }
  221.                 else
  222.                 {
  223.                     maintornado.transform.Rotate(0f, 0f, 10f);
  224.                 }
  225.             }
  226.         }
  227.     }
  228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement