コード例 #1
0
        private void FireEvent()
        {
            Animator.SetBool("Fire", false);
            if (IsShooting)
            {
                if (IsMine)
                {
                    Debug.Log("Spawn bullet " + this);
                    var position = WeaponBone.position + shootDirection * 0.65f;
                    var entity   = status.SpawnBullet(position, shootDirection);

                    var cmd = new EntityCreate();
                    cmd.prefab   = PrefabType.Bullet;
                    cmd.id       = entity.Id;
                    cmd.position = position;
                    cmd.forward  = shootDirection;
                    outgoings.Enqueue(cmd);
                }

                State &= ~StateFlags.Attack;
            }
            else if (IsBuilding)
            {
                if (IsMine)
                {
                    Debug.Log("Spawn Crate " + this);
                    var position = transform.position + shootDirection * 1.2f + Vector3.up * 1.5f;
                    var entity   = status.SpawnCrate(position);

                    var cmd = new EntityCreate();
                    cmd.prefab   = PrefabType.Crate;
                    cmd.id       = entity.Id;
                    cmd.position = position;
                    outgoings.Enqueue(cmd);
                }

                State &= ~StateFlags.Build;
            }
            // TODO: Authority
        }
コード例 #2
0
        public void OnPlayStatusChange(PlayState state)
        {
            if (!status.InGame)
            {
                respawnView.Hide();
                return;
            }

            if (state != PlayState.Alive && state != PlayState.Await)
            {
                respawnView.Show();
                respawnView.Await = state != PlayState.Respawn;
            }
            else
            {
                respawnView.Hide();
            }

            if (state == PlayState.Respawn)
            {
                respawnAfter = 5f;
                respawnView.RespawnWait(respawnAfter);
            }

            if (state == PlayState.Await)
            {
                var x    = UnityEngine.Random.Range(-5f, 5f);
                var z    = UnityEngine.Random.Range(16f, 22f);
                var side = characterStatus.Team == Team.TeamA ? -1f : 1f;

                var position = new Vector3(x, 0, z * side);
                var entity   = characterStatus.SpawnCharacter(position);
                var cmd      = new EntityCreate();
                cmd.prefab = PrefabType.Character;
                cmd.id     = entity.Id;
                outgoings.Enqueue(cmd);
            }
        }