jonichecker Geschrieben 7. September 2011 Melden Share Geschrieben 7. September 2011 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.