topical media & game development

talk show tell print

lib-unity-tutorial-network-m2h-Assets-Example4-GameAssets-Scripts-PlayerScript.js / js



  /* 
  *  This file is part of the Unity networking tutorial by M2H (http://www.M2H.nl)
  *  The original author of this code is Mike Hergaarden, even though some small parts 
  *  are copied from the Unity tutorials/manuals.
  *  Feel free to use this code for your own projects, drop us a line if you made something exciting! 
  */
  #pragma strict
  
  var thisName : String = "Bugged name";
  var rigidBodyView : NetworkView;
  var hp : int = 100;
  var theScoreBoard : scoreBoard;
  var localPlayer : boolean = false;
  
  var metalMaterial : Material;
  private var orgMaterial : Material;
  
  private var coloredUntill : float;
  private var invincible : boolean;
  
  function Awake(){
          orgMaterial = renderer.material;
          
          theScoreBoard= GameObject.Find("Generalscripts").GetComponent(scoreBoard);
  }
  
  function OnNetworkInstantiate (msg : NetworkMessageInfo) {
          // This is our own player
          if (networkView.isMine)
          {
                  //camera.main.enabled=false;
  
                  
                  localPlayer=true;
                  networkView.RPC("setName", RPCMode.Others, thisName);
                  
                  Destroy(GameObject.Find("LevelCamera"));
                  thisName=PlayerPrefs.GetString("playerName");
                  
                  var gun : Machinegun = transform.Find("CrateCamera/Weapon").GetComponent("Machinegun");
                  gun.localPlayer=true;
                  
  
                  
          }
          // This is just some remote controlled player, don't execute direct
          // user input on this. DO enable multiplayer controll
          else
          {
                  thisName="Remote"+Random.Range(1,10);
                  name += thisName;
          
                  transform.Find("CrateCamera").gameObject.active=false;
  
                  var tmp2 : FPSWalker = GetComponent(FPSWalker);
                  tmp2.enabled = false;
                  var tmp5 : MouseLook = GetComponent(MouseLook);
                  tmp5.enabled = false;
                  
                  networkView.RPC("askName", networkView.viewID.owner, Network.player);
                  
          
          }
  }
  
  function OnGUI(){
          if(localPlayer){
                  GUILayout.Label("HP: "+hp);
          }
  }
  
  @RPC
  function StartInvincibility(){
          invincible=true;
          renderer.material=metalMaterial;
          
          yield new WaitForSeconds (10);
          
          renderer.material=orgMaterial;        
          invincible=false;
  }
  
  function ApplyDamage (info : String[]){
          var damage : float= parseFloat(info[0]);
          var killerName : String= info[1];
  
          if(invincible){
                  return;
          }
          
          hp -= damage;
          if(hp<0){
                  theScoreBoard.LocalPlayerHasKilled();
                  networkView.RPC("Respawn",RPCMode.All);
          }else{
                  networkView.RPC("setHP",RPCMode.Others, hp); 
          }
  }
  
  @RPC
  function setHP(newHP : int){
          hp=newHP;
  }
  
  @RPC
  function Respawn(){
          if (networkView.isMine)
          {
                  theScoreBoard.LocalPlayerDied();
                          
                  // Randomize starting location
                  var spawnpoints : GameObject[] = GameObject.FindGameObjectsWithTag ("Spawnpoint");
                  var spawnpoint : Transform = spawnpoints[Random.Range(0, spawnpoints.length)].transform;
          
                  transform.position=spawnpoint.position;
                  transform.rotation=spawnpoint.rotation;        
          }
          hp=100;
  }
  
  @RPC
  function setName(name : String){
          thisName=name;
  }
  
  @RPC
  function askName(asker : NetworkPlayer){
          networkView.RPC("setName", asker, thisName);
  }


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.