public void PlayerStateChanged(PlayerStateChangedCommand cmd) { Vector3 position = new Vector3(cmd.PosX, cmd.PosY, cmd.PosZ); Quaternion rotation = new Quaternion(cmd.RotationX, cmd.RotationY, cmd.RotationZ, cmd.RotationW); PlayerChangedStateType type = cmd.ChangedStateType; DateTime cmdTime = cmd.Time; switch(type) { case PlayerChangedStateType.StartMove: RunSync(position, rotation, cmdTime); break; case PlayerChangedStateType.EndMove: StopRunSync(position, rotation, cmdTime); break; case PlayerChangedStateType.Shot: ShotAsync(position, rotation, cmdTime); break; case PlayerChangedStateType.Injured: this.Life -= 10; break; case PlayerChangedStateType.Dead: Life = 0; anim.death = true; break; case PlayerChangedStateType.Reborn: Life = 100; anim.reset = true; transform.position = position; transform.rotation = rotation; Debug.Log(Life); break; } }
public PlayerStateChangedCommand GetCurrentStateCmd(PlayerChangedStateType type) { PlayerStateChangedCommand cmd = new PlayerStateChangedCommand(); cmd.PosX = transform.position.x; cmd.PosY = transform.position.y; cmd.PosZ = transform.position.z; cmd.RotationW = transform.rotation.w; cmd.RotationX = transform.rotation.x; cmd.RotationY = transform.rotation.y; cmd.RotationZ = transform.rotation.z; cmd.Time = NetManager.Instance.Clock.Now; cmd.ChangedStateType = type; return cmd; }