protected override void OnUpdate()
        {
            if (m_Data.Length == 0)
            {
                return;
            }

            var settings = TwoStickBootstrap.Settings;

            float dt            = Time.deltaTime;
            var   firingPlayers = new List <GameObject>();

            for (int index = 0; index < m_Data.Length; ++index)
            {
                var position = m_Data.Position[index];
                var heading  = m_Data.Heading[index];

                var playerInput = m_Data.Input[index];

                position.Value += dt * playerInput.Move * settings.playerMoveSpeed;

                if (playerInput.Fire)
                {
                    heading.Value            = math.normalize(playerInput.Shoot);
                    playerInput.FireCooldown = settings.playerFireCoolDown;

                    firingPlayers.Add(m_Data.GameObject[index]);
                }
            }

            foreach (var player in firingPlayers)
            {
                var newShotData = new ShotSpawnData()
                {
                    Position = player.GetComponent <Position2D>().Value,
                    Heading  = player.GetComponent <Heading2D>().Value,
                    Faction  = player.GetComponent <Faction>()
                };

                ShotSpawnSystem.SpawnShot(newShotData);
            }
        }
Beispiel #2
0
        protected override void OnUpdate()
        {
            if (m_Player.Length == 0)
            {
                return;
            }

            var playerPos = m_Player.Position[0].Value;

            var shotSpawnData = new List <ShotSpawnData>();

            float dt        = Time.deltaTime;
            float shootRate = TwoStickBootstrap.Settings.enemyShootRate;

            for (int i = 0; i < m_Data.Length; ++i)
            {
                var state = m_Data.ShootState[i];

                state.Cooldown -= dt;
                if (state.Cooldown <= 0.0)
                {
                    state.Cooldown = shootRate;
                    var position = m_Data.Position[i].Value;

                    ShotSpawnData spawn = new ShotSpawnData()
                    {
                        Position = position,
                        Heading  = math.normalize(playerPos - position),
                        Faction  = TwoStickBootstrap.Settings.EnemyFaction
                    };
                    shotSpawnData.Add(spawn);
                }
            }

            foreach (var spawn in shotSpawnData)
            {
                ShotSpawnSystem.SpawnShot(spawn);
            }
        }