void SpawnOne() { SpawnerState state = _state.CurrentState[0]; float3 spawnPosition = GetRandomPosition(); state.CurrentCount++; Debug.Log($"spawn new enemy at {spawnPosition}"); PostUpdateCommands.CreateEntity(Bootloader.EnemyArchveType); PostUpdateCommands.SetComponent(new Position { Value = spawnPosition }); PostUpdateCommands.SetComponent(new Rotation { Value = quaternion.LookRotation(new float3(0.0f, 0.0f, -1.0f), math.up()) }); PostUpdateCommands.SetComponent(new MoveSpeed { Speed = GameSettings.ENEMY_SPEED }); PostUpdateCommands.SetComponent(new Health { Value = GameSettings.ENEMY_HP }); PostUpdateCommands.AddSharedComponent(Bootloader.EnemyPrefab); // PostUpdateCommands.AddSharedComponent(Bootloader.EnemyPrefab); _state.CurrentState[0] = state; }
/* protected override JobHandle OnUpdate(JobHandle inputDeps) * { * EntityCommandBuffer cmd = _removeBuffer.CreateCommandBuffer(); * * var remove_bullet = new RemoveBulletsJob * { * PlayerDead = _playerCheck.PlayerInput.Length == 0, * Commands = cmd * }.ScheduleSingle(this, inputDeps); * * var remove_unit = new RemoveUnitJob * { * Commands = cmd * }.ScheduleSingle(this,remove_bullet); * * return remove_unit; * } */ protected override void OnUpdate() { bool playerAlive = _playerCheck.PlayerInput.Length > 0; float dt = Time.deltaTime; for (int i = 0; i < _data.Entities.Length; ++i) { Shot s = _data.Shots[i]; if (s.TimeToLive > 0) { s.TimeToLive -= dt; } if (s.TimeToLive <= 0.0f || !playerAlive) { PostUpdateCommands.DestroyEntity(_data.Entities[i]); } _data.Shots[i] = s; } SpawnerState ss = _gameState.State[0]; bool changed = false; for (int i = 0; i < _enemyCheckData.Enemies.Length; ++i) { Health hp = _enemyCheckData.Healths[i]; if (hp.Value <= 0 || !playerAlive) { if (hp.Value <= 0) { ss.KillCount++; changed = true; } PostUpdateCommands.DestroyEntity(_enemyCheckData.Entities[i]); } } if (changed) { _gameState.State[0] = ss; } for (int i = 0; i < _playerCheck.PlayerInput.Length; i++) { if (_playerCheck.Health[i].Value <= 0) { PostUpdateCommands.DestroyEntity(_playerCheck.Entities[i]); } } }