Advertisement
Skizerzz

PlayerHandler Unity C#

Jan 8th, 2015
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.49 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class PlayerHandler : Photon.MonoBehaviour {
  5.    
  6.     private float timer;
  7.     private float startTime;
  8.     public bool isBulletCollidable = false;
  9.     private bool justCollided;
  10.     private float playerHealth = 100f;
  11.     private float shieldHealth = 100f;
  12.     private GameObject overviewCamera;
  13.     private float shieldTimer;
  14.     private bool shieldDestroyed;
  15.    
  16.     public GameObject redShield;
  17.     public GameObject myRedShield;
  18.     public GameObject camera;
  19.     private GameObject shieldSlider;
  20.     public bool playerJustSpawned;
  21.     public bool foundTarget;
  22.     public float smoothing;
  23.     public GameObject playerCamera;
  24.     public float shieldRegenDelay = 2f;
  25.     public float shieldRegenRate = 20f;
  26.     public float shieldCooldownTimer = 3f;
  27.    
  28.     public bool playerIsMine = false;
  29.    
  30.     public GameObject GameScriptObject;
  31.     public NetworkManager networkManager;
  32.    
  33.     private Vector3 offset;
  34.    
  35.     private Component playerScript;
  36.  
  37.     // Use this for initialization
  38.     void Start ()
  39.     {
  40.         // Set if the spawned player is the client's player.
  41.         playerIsMine = gameObject.GetComponent<PhotonView>().isMine;
  42.        
  43.         if(shieldSlider == null)
  44.         {
  45.             shieldSlider = GameObject.FindWithTag("ShieldSlider");
  46.             Debug.Log(shieldSlider.ToString());
  47.         }
  48.        
  49.         if(playerIsMine == true)
  50.         {
  51.             overviewCamera = GameObject.FindWithTag("OverviewCamera");
  52.             if(overviewCamera == null)
  53.             {
  54.             }
  55.             else
  56.             {
  57.                 overviewCamera.SetActive(false);
  58.             }
  59.             GameScriptObject = GameObject.Find("_SCRIPTS");
  60.             networkManager = GameScriptObject.GetComponent<NetworkManager>();
  61.             foundTarget = false;
  62.             playerJustSpawned = true;
  63.             RespawnShield();
  64.             shieldDestroyed = false;
  65.             playerScript = gameObject.GetComponent<PlayerMovement>();
  66.             SpawnCamera();
  67.         }
  68.     }
  69.    
  70.     // Update is called once per frame
  71.     void Update ()
  72.     {
  73.         if(playerIsMine == false)
  74.             return;
  75.         //Shield Shiz ----------------------------------------------
  76.         shieldTimer += Time.deltaTime;
  77.         if(justCollided)
  78.             shieldTimer = 0;
  79.         if(shieldHealth < 100 && shieldDestroyed == false)
  80.         {
  81.             if(shieldTimer >= shieldRegenDelay)
  82.             {
  83.                 shieldHealth += shieldRegenRate * Time.deltaTime;
  84.                 //shieldSlider.GetComponent<Slider>().value = shieldHealth;
  85.                 Debug.Log(shieldHealth.ToString());
  86.             }
  87.             if(shieldHealth >= 100f && timer > shieldRegenDelay)
  88.             {
  89.                 shieldTimer = 0f;
  90.                 shieldHealth = 100f;
  91.                 Debug.Log("Shield Regenerated");
  92.             }
  93.         }
  94.        
  95.         if(shieldHealth < 0 && shieldDestroyed == false)
  96.         {
  97.             DestroyShield();
  98.         }
  99.        
  100.         //End of Shield Shiz ---------------------------------------
  101.  
  102.         //----------------------------------------------------------
  103.         timer += Time.deltaTime;
  104.         if(justCollided && shieldDestroyed == true)
  105.         {
  106.             CancelInvoke();
  107.             Invoke("ShieldRespawnCooldown", shieldCooldownTimer);
  108.         }
  109.        
  110.         if(playerHealth <= 0)
  111.         {
  112.             KillPlayer();
  113.         }
  114.         // If i have a shield, turn off bullet collision bool
  115.         if(shieldDestroyed = false && isBulletCollidable == true)
  116.         {
  117.             isBulletCollidable = false;
  118.         }
  119.         // Otherwise, turn on bullet collision
  120.         else if(shieldDestroyed = true && isBulletCollidable == false)
  121.         {
  122.             isBulletCollidable = true;
  123.         }
  124.        
  125.         // Turns on or off Player (layer 8) collision with Bullet (layer 9) Collision
  126.         //Physics.IgnoreLayerCollision(8, 9, !isBulletCollidable);
  127.     }
  128.    
  129.     void FixedUpdate()
  130.     {
  131.         if(playerIsMine == false)
  132.             return;
  133.        
  134.         cameraFollow();
  135.     }
  136.    
  137.     void LateUpdate()
  138.     {
  139.         if(playerIsMine == false)
  140.             return;
  141.        
  142.         justCollided = false;
  143.     }
  144.    
  145.     void ShieldRespawnCooldown()
  146.     {
  147.         Invoke("RespawnShieldLowHealth", shieldCooldownTimer);
  148.     }
  149.    
  150.     void SpawnCamera()
  151.     {
  152.         playerCamera = GameObject.FindWithTag("MainCamera");
  153.         if(playerCamera == null)
  154.         {
  155.             playerCamera = (GameObject)Instantiate(camera, new Vector3(transform.position.x, 16, transform.position.z), Quaternion.identity);
  156.         }
  157.         else
  158.         {
  159.             playerCamera.transform.position = new Vector3(transform.position.x, 16, transform.position.z);
  160.         }
  161.         offset = transform.position - playerCamera.transform.position;
  162.         playerCamera.transform.LookAt(Vector3.down);
  163.     }
  164.    
  165.     void cameraFollow()
  166.     {
  167.         playerCamera.transform.position = Vector3.Slerp(playerCamera.transform.position, transform.position - offset,
  168.                                                   smoothing * Time.deltaTime);
  169.     }
  170.    
  171.     void RespawnShield()
  172.     {
  173.         if(playerIsMine)
  174.         {
  175.             foreach(Transform child in transform)
  176.             {
  177.                 if(child.gameObject.tag == "Shield")
  178.                     myRedShield = child.gameObject; //(GameObject) PhotonNetwork.Instantiate("RedTeamShield", transform.position, Quaternion.identity, 0);
  179.             }
  180.         }
  181.         else
  182.         {
  183.             //gameObject.GetComponent<PhotonView>().RPC("RespawnRemoteShield", PhotonTargets.All);
  184.         }
  185.         shieldDestroyed = false;
  186.         Debug.Log(shieldDestroyed.ToString());
  187.     }
  188.    
  189.     void RespawnShieldLowHealth()
  190.     {
  191.         if(playerIsMine)
  192.         {
  193.             myRedShield.GetComponent<MeshRenderer>().enabled = true;
  194.             shieldHealth = 1;
  195.             shieldTimer = 0;
  196.             shieldDestroyed = false;
  197.             playerJustSpawned = false;
  198.             Debug.Log(shieldDestroyed.ToString());
  199.             // SEND MESSAGE TO TURN THIS ON ON OTHER CLIENTS
  200.         }
  201.     }
  202.    
  203.     void KillPlayer()
  204.     {
  205.         GetComponent<PhotonView>().RPC("DestroyPlayer", PhotonTargets.MasterClient);
  206.     }
  207.    
  208.     void DestroyShield()
  209.     {
  210.         shieldDestroyed = true;
  211.         Debug.Log(shieldDestroyed.ToString());
  212.         myRedShield.GetComponent<MeshRenderer>().enabled = false;
  213.         shieldHealth = 0;
  214.        
  215.         //GetComponent<PhotonView>().RPC("DestroyShieldGlobally", PhotonTargets.All);
  216.     }
  217.    
  218.     void OnCollisionEnter(Collision other)
  219.     {
  220.         //If this isn't the client, then leave
  221.         if(playerIsMine == false)
  222.             return;
  223.         //Shield Damage
  224.         if(other.gameObject.tag == "Projectile" && GetComponent<PlayerHandler>().shieldDestroyed == false)
  225.         {
  226.             myRedShield.GetComponent<ShieldEffectScript>().ShowEffect(other.gameObject, myRedShield.GetComponent<ShieldEffectScript>().ShapeOption);
  227.             shieldHealth -= other.gameObject.GetComponent<BulletScript>().damageDealt;
  228.             justCollided = true;
  229.             Debug.Log(shieldHealth.ToString());
  230.            
  231.             other.gameObject.GetComponent<PhotonView>().RPC("KillBullet", PhotonTargets.MasterClient);
  232.             //other.gameObject.GetComponent<PhotonView>().RPC("KillBullet", PhotonTargets.OthersBuffered);
  233.             //Destroy(other.gameObject);
  234.         }
  235.         //Player Damage if shield is down
  236.         else if(other.gameObject.tag == "Projectile")
  237.         {
  238.            
  239.             CancelInvoke();
  240.             Invoke("RespawnShieldLowHealth", shieldCooldownTimer);
  241.             playerHealth -= other.gameObject.GetComponent<BulletScript>().damageDealt;
  242.             //shieldSlider.GetComponent<Slider>().value = shieldHealth;
  243.             justCollided = true;
  244.            
  245.             other.gameObject.GetComponent<PhotonView>().RPC("KillBullet", PhotonTargets.MasterClient);
  246.             //other.gameObject.GetComponent<PhotonView>().RPC("KillBullet", PhotonTargets.OthersBuffered);
  247.             //Destroy(other.gameObject);
  248.         }
  249.     }
  250.    
  251.     void OnTriggerEnter(Collider other)
  252.     {
  253.         if(playerIsMine == false)
  254.             return;
  255.         //if(other.gameObject.tag == "Projectile" && myRedShield.activeSelf == false)
  256.         //{
  257.         //  playerHealth -= other.gameObject.GetComponent<BulletScript>().damageDealt;
  258.         //  justCollided = true;
  259.         //  Debug.Log(playerHealth.ToString());
  260.         //}
  261.     }
  262.    
  263.     /// <summary>
  264.     /// RPC's
  265.     /// </summary>
  266.            
  267.     [RPC]
  268.     public void DestroyRemoteShield()
  269.     {
  270.         myRedShield.GetComponent<MeshRenderer>().enabled = false;
  271.     }
  272.    
  273.     [RPC]
  274.     public void RespawnRemoteShield()
  275.     {
  276.         myRedShield.GetComponent<MeshRenderer>().enabled = true;
  277.         Debug.Log("RespawnRemoteShield");
  278.     }
  279.    
  280.     [RPC]
  281.     public void DestroyPlayer()
  282.     {
  283.         PhotonNetwork.Destroy(gameObject);
  284.     }
  285. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement