void HandleMovement() { PlayerMovePackage.Direction dir = PlayerMovePackage.Direction.Stop; if (Input.GetKey(Options.Controls.Forward)) { dir = dir.Add(PlayerMovePackage.Direction.Up); } if (Input.GetKey(Options.Controls.Backward)) { dir = dir.Add(PlayerMovePackage.Direction.Back); } if (Input.GetKey(Options.Controls.StrafeLeft)) { dir = dir.Add(PlayerMovePackage.Direction.Left); } if (Input.GetKey(Options.Controls.StrafeRight)) { dir = dir.Add(PlayerMovePackage.Direction.Right); } if (currentDirection != dir) { PlayerMovePackage pmp = new PlayerMovePackage(transform.root.position, transform.root.rotation.eulerAngles, dir); NetworkManager.Instance.Client.SendData(pmp); //print("Changed: " + dir); } currentDirection = dir; }
void FixedUpdate() { fireTimer++; //print(fireTimer); if (firing && fireTimer <= 10) { SetLasersEnabled(true); } else if (fireTimer > 10) { SetLasersEnabled(false); } if (!IsControlled || IsDead) { return; } //if (firing && fireTimer <= 10) //Fire(); HandleMovement(); HandleFiring(); HandleFlagPickup(); if (resend) { //PlayerMovePackage pmp = new PlayerMovePackage(transform.root.rotation.eulerAngles); PlayerMovePackage pmp = null; if (sendCounter == 1) { pmp = new PlayerMovePackage(transform.root.position, transform.root.rotation.eulerAngles, currentDirection); sendCounter = 0; } else { pmp = new PlayerMovePackage(transform.root.rotation.eulerAngles); } NetworkManager.Instance.Client.SendData(pmp); resend = false; } }
public void SendData(DataPackage dp) { if (queue.Count != 0) { PlayerMovePackage newPmp = dp as PlayerMovePackage; if (newPmp != null) { for (int i = queue.Count - 1; i >= 0; i--) { PlayerMovePackage pmp = queue[i] as PlayerMovePackage; if (pmp == null || pmp.RotationOnly != newPmp.RotationOnly) { continue; } queue.RemoveAt(i); } } } queue.Add(dp); }
public void OnDataReceived(DataPackage dp) { if (dp is TokenChangePackage) { if (sendCounter == 1) { resend = true; sendCounter = 0; } else { sendCounter++; } } else if (dp is PlayerMovePackage && dp.SenderRemoteIPEndpoint.Address.Equals(PlayerIP)) { PlayerMovePackage pmp = (PlayerMovePackage)dp; if (!pmp.RotationOnly) { //set position transform.root.position = pmp.Position; //set rotation float newRotX = pmp.Rotation.x - transform.root.rotation.eulerAngles.x; float newRotY = pmp.Rotation.y - transform.root.rotation.eulerAngles.y; float newRotZ = pmp.Rotation.z - transform.root.rotation.eulerAngles.z; transform.root.Rotate(newRotX, newRotY, newRotZ); //set direction if (pmp.Dir.Has(PlayerMovePackage.Direction.Stop)) { anim.SetFloat("Speed", 0); } if (pmp.Dir.Has(PlayerMovePackage.Direction.Up)) { anim.SetFloat("Speed", 1); } if (pmp.Dir.Has(PlayerMovePackage.Direction.Back)) { anim.SetFloat("Speed", -1); } if (pmp.Dir == PlayerMovePackage.Direction.Stop) { setGangnamVisible(true); } else { setGangnamVisible(false); } anim.speed = animSpeed; //float h = Input.GetAxis("Horizontal"); // setup h variable as our horizontal input axis //float v = Input.GetAxis("Vertical"); // setup v variables as our vertical input axis //print(h + " | " + v); //anim.SetFloat("Speed", v); // set our animator's float parameter 'Speed' equal to the vertical input axis //anim.SetFloat("Direction", h); // set our animator's float parameter 'Direction' equal to the horizontal input axis //anim.speed = animSpeed; // set the speed of our animator to the public variable 'animSpeed' //anim.SetLookAtWeight(lookWeight); // set the Look At Weight - amount to use look at IK vs using the head's animation } } else if (!IsControlled) { //set rotation float newRotX = pmp.Rotation.x - transform.root.rotation.eulerAngles.x; float newRotY = pmp.Rotation.y - transform.root.rotation.eulerAngles.y; float newRotZ = pmp.Rotation.z - transform.root.rotation.eulerAngles.z; transform.root.Rotate(newRotX, newRotY, newRotZ); } } else if (dp is FlagPackage && dp.SenderRemoteIPEndpoint.Address.Equals(PlayerIP)) { FlagPackage fp = (FlagPackage)dp; if (fp.Event == FlagPackage.FlagEvent.Capture) { Score += 3; } else if (fp.Event == FlagPackage.FlagEvent.Drop) { Score--; } } else if (dp is FireWeaponPackage && dp.SenderRemoteIPEndpoint.Address.Equals(PlayerIP)) { FireWeaponPackage fwp = (FireWeaponPackage)dp; //Set laser target Camera c = GetComponentInChildren <Camera>(); float newRotX = fwp.Target - c.transform.rotation.eulerAngles.x; c.transform.Rotate(newRotX, 0, 0); startFiringPackageSent = false; stopFiringPackageSent = false; firing = fwp.Enabled; fireTimer = 0; } else if (dp is PlayerHealthPackage) { PlayerHealthPackage php = (PlayerHealthPackage)dp; if (!php.PlayerIP.Equals(PlayerIP)) { return; } Health -= php.Value; if (IsDead) { Health = 0; Die(); } } else if (dp is PlayerSpawnPackage && dp.SenderRemoteIPEndpoint.Address.Equals(PlayerIP)) { setRobotVisible(true); setGangnamVisible(true); Health = 100; if (IsControlled) { GameManager.Instance.spawnRobot(PlayerIP); } } }
void HandleMovement() { PlayerMovePackage.Direction dir = PlayerMovePackage.Direction.Stop; if (Input.GetKey(Options.Controls.Forward)) dir = dir.Add(PlayerMovePackage.Direction.Up); if (Input.GetKey(Options.Controls.Backward)) dir = dir.Add(PlayerMovePackage.Direction.Back); if (Input.GetKey(Options.Controls.StrafeLeft)) dir = dir.Add(PlayerMovePackage.Direction.Left); if (Input.GetKey(Options.Controls.StrafeRight)) dir = dir.Add(PlayerMovePackage.Direction.Right); if (currentDirection != dir) { PlayerMovePackage pmp = new PlayerMovePackage(transform.root.position, transform.root.rotation.eulerAngles, dir); NetworkManager.Instance.Client.SendData(pmp); //print("Changed: " + dir); } currentDirection = dir; }
void FixedUpdate() { fireTimer++; //print(fireTimer); if (firing && fireTimer <= 10) SetLasersEnabled(true); else if (fireTimer > 10) SetLasersEnabled(false); if (!IsControlled || IsDead) return; //if (firing && fireTimer <= 10) //Fire(); HandleMovement(); HandleFiring(); HandleFlagPickup(); if (resend) { //PlayerMovePackage pmp = new PlayerMovePackage(transform.root.rotation.eulerAngles); PlayerMovePackage pmp = null; if (sendCounter == 1) { pmp = new PlayerMovePackage(transform.root.position, transform.root.rotation.eulerAngles, currentDirection); sendCounter = 0; } else pmp = new PlayerMovePackage(transform.root.rotation.eulerAngles); NetworkManager.Instance.Client.SendData(pmp); resend = false; } }