topical media & game development
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.