Jump to content
Unity Insider Forum

OnSerializeNetworkView mehrere Parameter


Recommended Posts

Liebe Forenmitglieder,

 

Nach vielen erfolglosen Versuchen eine Boolsche Variable und eine vom Typ "Vector3" über eine SerializeNetworkView zu

synchronisieren wende ich mich an euch.

Mein Projekt basiert auf dem M2H Networking Tutorial und wurde so umfunktioniert, dass es auch übertragen soll, ob der charakter im moment zielt.

Das Script prüft eine "Fire2" Eingabe und änder darauf den Wert einer bool diese legt dann fest ob der Charakter die ZielAnimation abspielt oder nicht.

Im folgenden findet ihr den Code des Skripts.

Auf Anfrage werde ich das ganze Projekt hochladen

/* 
*  This file is part of the Unity networking tutorial by M2H (http://www.M2H.nl)
*  The original author of this code 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 me a line if you made something exciting! 
*/
#pragma strict
#pragma implicit
#pragma downcast

var mouseSpeed:float = 2; // 2 ist empfelehnswert
var DrehSpeed : int = 50;
var JumpHeight : int = 5;
var speed : float = 5;
var SpielerName : int;
var currentAnim ="stop";
var AnimChanged : boolean;
private var recievedSpielerName : int ;
private var isAiming: boolean;
function Awake(){
animation.AddClip(animation["aim"].clip,"AimUpperBody");
animation["AimUpperBody"].AddMixingTransform(transform.Find("root/spine1"));
animation["AimUpperBody"].layer = 5;
animation["walk"].layer = 1;
if(!networkView.isMine){
	//We aren't the network owner, disable this script
	//RPC's and OnSerializeNetworkView will STILL get trough!
	enabled=false;	

}
}

function Update(){
				//ziel modus ein aus
				if(Input.GetButtonDown("Fire2")&&networkView.isMine)							{
							//animation.CrossFade("AimUpperBody");
							isAiming=true;
				}
				if(Input.GetButtonUp("Fire2")&&networkView.isMine)
							{
							//animation.Stop("AimUpperBody");
							isAiming=false;
				}
							//ziel modus gleichsetzten
				switch(isAiming)
				{
				case true:animation.CrossFade("AimUpperBody");
				break;
				case false:animation.Stop("AimUpperBody");
				break;
				}
//ziel modus ende
	//ziel höhe
	if(networkView.isMine){

		if (Input.mousePosition.y/Screen.height+mouseSpeed>0)
	{
	animation["AimUpperBody"].time = Input.mousePosition.y/Screen.height*mouseSpeed;
	}
	//ziel höhe ende
	}

//animation.CrossFade("walk");
if(networkView.isMine){
	this.gameObject.BroadcastMessage("SendName",SpielerName);
	if (Input.GetButtonDown("Jump")){
		this.rigidbody.velocity =transform.TransformDirection(Vector3.up*JumpHeight);
		}else{
		//Do nothing
		}			
	//Only the owner can move the cube!			
	var Rotation = Input.GetAxis("Horizontal")*DrehSpeed;

	transform.Rotate(0, Rotation * Time.deltaTime,0);
	var moveDirection : Vector3 = new Vector3(0, 0, Input.GetAxis("Vertical"));
				if(Input.GetKeyDown("w")/*&&!currentAnim=="forward"*/)
				{
				 currentAnim = "forward";
				 AnimChanged = true;
				}
				if(Input.GetKeyDown("s")/*&&!currentAnim=="backward"*/)
				{
				 currentAnim = "backward";
				 AnimChanged = true;
				}
				if(Input.GetKeyUp("s")||Input.GetKeyUp("w")/*&&!currentAnim=="backward"*/)
				{
				 currentAnim = "stop";
				 AnimChanged = true;
				}
				if (true){
				switch(currentAnim)
				{
					case "forward":
						animation["walk"].speed = 1;
						animation.CrossFade("walk");
						break;
					case "stop":
						animation.Stop("walk");
						break;
					case "backward":
						animation["walk"].speed = -1;
						animation.CrossFade("walk");
						break;
						}
						AnimChanged = false;
						}
	var speed : float = 5;
	transform.Translate(speed * moveDirection * Time.deltaTime);
}

}


function OnSerializeNetworkView(stream : BitStream, info : NetworkMessageInfo)
{
if (stream.isWriting){
	//Executed on the owner of the networkview; 
	//The server sends it's position over the network

	var pos : Vector3 = transform.position;		
	stream.Serialize(pos);//"Encode" it, and send it
	stream.Serialize(isAiming);

}else{
	//Executed on the others; 
	//The clients receive a position and set the object to it

	var posReceive : Vector3 = Vector3.zero;
	var isAimingReceive : boolean = true;
	stream.Serialize(posReceive); //"Decode" it and receive it
	transform.position = posReceive;
	stream.Serialize(isAimingReceive);
	IsAiming = isAimingReceive;

}


}
function OnNetworkInstantiate (msg : NetworkMessageInfo) {
// This is our own player
if (networkView.isMine)
{
 Camera.main.SendMessage("SetTarget", transform);

}
}
///Getroffen werden [Anfang]

//finde den Namen dees SChützen heraus 
//wird von Kugelskript aufgerufen
function GetName (recieved : int ){

recievedSpielerName = recieved;
}

function GetDamage (dmg : int ){
Debug.Log(recievedSpielerName + "|" + SpielerName);



//Bei Frremdbeschuss den schaden in minusleben umwandeln und an die Healthbar schicken
this.gameObject.SendMessage("addjustcurrenthealth",(dmg * (-0.5)));

}
///Getroffen werden [Ende]

 

Ich hab bedanke mich schon im Voraus für alle hilfreichen Antworten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...