Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using ExitGames.Client.Photon;
- using Photon;
- using System;
- using System.Collections;
- using System.Runtime.InteropServices;
- using UnityEngine;
- using Xft;
- public class Tornado : UnityEngine.MonoBehaviour
- {
- public float a = 0f;
- public GameObject[] tornado = new GameObject[50];
- public bool activetornado = false;
- public GameObject maintornado = null;
- public GameObject main_object = null;
- public float timeA = 0f;
- public float timeB = 0f;
- public float timeC = 0f;
- public bool CanMove(int number)
- {
- if (number == 0)
- {
- if (Time.time - timeA > 1f)
- {
- timeA = Time.time;
- return true;
- }
- else
- return false;
- }
- else if (number == 1)
- {
- if (Time.time - timeB > 2f)
- {
- timeB = Time.time;
- return true;
- }
- else
- return false;
- }
- else
- {
- if (Time.time - timeC > 3f)
- {
- timeC = Time.time;
- return true;
- }
- else
- return false;
- }
- }
- public void GetMainObject(GameObject ojf)
- {
- this.main_object = ojf;
- }
- public void LateUpdate()
- {
- if (Input.GetKeyDown(KeyCode.Alpha7))
- {
- if (activetornado)
- {
- for (int z = 0; z < 50; z++)
- {
- PhotonNetwork.Destroy(tornado[z]);
- tornado[z] = null;
- }
- }
- MakeTornado();
- }
- if (Input.GetKeyDown(KeyCode.Alpha8))
- {
- for (int z = 0; z < 50; z++)
- {
- PhotonNetwork.Destroy(tornado[z]);
- tornado[z] = null;
- }
- activetornado = false;
- }
- if (activetornado)
- {
- GameObject[] pl = GameObject.FindGameObjectsWithTag("Player");
- GameObject[] ti = GameObject.FindGameObjectsWithTag("titan");
- for (int z = 0; z < pl.Length; z++)
- {
- if (pl[z] != main_object && !pl[z].GetComponent<Tornado>())
- {
- Vector3 direction = maintornado.transform.position + new Vector3(0f, 25f, 0f) - pl[z].transform.position;
- direction.Normalize();
- float multiplier = 0;
- if (Vector3.Distance(pl[z].transform.position, maintornado.transform.position + new Vector3(0f, 25f, 0f)) > 40)
- {
- multiplier = (Vector3.Distance(pl[z].transform.position, maintornado.transform.position + new Vector3(0f, 25f, 0f)) * -1 + 400f) / 180;
- }
- else
- {
- multiplier = (Vector3.Distance(pl[z].transform.position, maintornado.transform.position + new Vector3(0f, 25f, 0f)) * -1 + 400f) / 1200;
- }
- if (multiplier > 0)
- {
- 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)
- {
- pl[z].GetComponent<HERO>().photonView.RPC("blowAway", PhotonTargets.All, new object[] { new Vector3(0f, 2f, 0f) });
- }
- if (pl[z].transform.position.y < maintornado.transform.position.y + 25f)
- {
- pl[z].GetComponent<HERO>().photonView.RPC("blowAway", PhotonTargets.All, new object[] { Vector3.Scale(direction, new Vector3(multiplier, multiplier, multiplier)) });
- }
- else
- {
- pl[z].GetComponent<HERO>().photonView.RPC("blowAway", PhotonTargets.All, new object[] { Vector3.Scale(direction, new Vector3(multiplier, 0f, multiplier)) });
- }
- }
- }
- if (ti[z] != main_object && ti[z].GetComponent<TITAN>())
- {
- Vector3 direction = maintornado.transform.position + new Vector3(0f, 45f, 0f) - ti[z].transform.position;
- direction.Normalize();
- float multiplier = 0;
- if (Vector3.Distance(ti[z].transform.position, maintornado.transform.position + new Vector3(0f, 45f, 0f)) > 40)
- {
- multiplier = (Vector3.Distance(ti[z].transform.position, maintornado.transform.position + new Vector3(0f, 45f, 0f)) * -1 + 450f) / 90;
- }
- else
- {
- multiplier = (Vector3.Distance(ti[z].transform.position, maintornado.transform.position + new Vector3(0f, 45f, 0f)) * -1 + 450f) / 500;
- }
- if (multiplier > 0)
- {
- 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)
- {
- ti[z].transform.Translate(new Vector3(0f, 2f, 0f));
- }
- if (ti[z].transform.position.y < maintornado.transform.position.y + 45f)
- {
- ti[z].transform.Translate(Vector3.Scale(direction, new Vector3(multiplier, multiplier, multiplier)));
- }
- else
- {
- ti[z].transform.Translate(Vector3.Scale(direction, new Vector3(multiplier, 0f, multiplier)));
- }
- if (Vector3.Distance(ti[z].transform.position, maintornado.transform.position + new Vector3(0f, 25f, 0f)) < 50)
- {
- ti[z].transform.RotateAround(maintornado.transform.position, Vector3.up, UnityEngine.Random.Range(10, 200) * Time.deltaTime);
- }
- }
- }
- }
- }
- }
- public void MakeTornado()
- {
- GameObject[] titns = GameObject.FindGameObjectsWithTag("titan");
- GameObject[] ntitans = new GameObject[titns.Length];
- Transform[] mytitns = new Transform[titns.Length];
- for (int z = 0; z < titns.Length; z++)
- {
- mytitns[z] = titns[z].transform;
- PhotonNetwork.Destroy(titns[z]);
- ntitans[z] = PhotonNetwork.Instantiate("TITAN_VER3.1", mytitns[z].position, mytitns[z].rotation, 0);
- ntitans[z].rigidbody.mass /= 5;
- }
- this.maintornado = GameObject.CreatePrimitive(PrimitiveType.Capsule);
- maintornado.transform.position = this.main_object.transform.position + new Vector3(0f, 1f, 0f);
- maintornado.AddComponent<ParticleSystem>();
- maintornado.AddComponent<ParticleAnimator>();
- maintornado.GetComponent<ParticleSystem>().emissionRate = 10f;
- maintornado.GetComponent<ParticleSystem>().startSize = 2f;
- maintornado.GetComponent<ParticleSystem>().renderer.material.mainTexture = GameObject.Find("Chatroom").GetComponent<InRoomChat>().tex;
- maintornado.GetComponent<ParticleSystem>().renderer.material.color = Color.clear;
- maintornado.GetComponent<ParticleSystem>().renderer.material.mainTexture = GameObject.Find("Chatroom").GetComponent<InRoomChat>().tex;
- maintornado.GetComponent<ParticleAnimator>().particleSystem.emissionRate = 1100f;
- maintornado.GetComponent<ParticleAnimator>().particleSystem.startSpeed = 200f;
- maintornado.transform.Rotate(-90f, 0f, 0f);
- activetornado = true;
- }
- public void Start()
- {
- timeA = Time.time;
- timeB = Time.time;
- timeC = Time.time;
- }
- public void Update()
- {
- if (maintornado != null)
- {
- maintornado.GetComponent<ParticleSystem>().Play();
- RaycastHit hit;
- int way = UnityEngine.Random.Range(0, 10);
- if (Physics.Raycast(maintornado.transform.position, maintornado.transform.up * -1, out hit))
- {
- }
- if (Physics.Raycast(maintornado.transform.position, maintornado.transform.up * -1, out hit))
- {
- }
- if (CanMove(1))
- {
- if (way >= 5)
- {
- maintornado.transform.Rotate(0f, 0f, -30f);
- }
- else
- {
- maintornado.transform.Rotate(0f, 0f, 20f);
- }
- }
- if (Physics.Raycast(maintornado.transform.position, maintornado.transform.up * -1, out hit))
- {
- if (hit.distance > 5f)
- {
- maintornado.transform.position = maintornado.transform.position + maintornado.transform.up * -1 / 3;
- }
- else
- {
- maintornado.transform.Rotate(0f, 0f, 10f);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement