protected override void OnUpdate() { var gameState = GetSingleton <GameState>(); var input = World.GetExistingSystem <InputSystem>(); var playerEntity = GetSingletonEntity <Player>(); if (gameState.Value == GameStates.Start && IsPressingToStart(input)) { // remove all stuff EntityManager.DestroyEntity(m_AsteroidsQuery); EntityManager.DestroyEntity(m_MissileQuery); // put the ship back in the center EntityManager.SetComponentData(playerEntity, new Translation { Value = float3.zero }); EntityManager.SetComponentData(playerEntity, new Rotation { Value = quaternion.identity }); AudioUtils.PlaySound(EntityManager, AudioTypes.ExtraShip); gameState.Value = GameStates.InGame; SetSingleton(gameState); } }
protected override void OnUpdate() { var gameState = GetSingleton <GameState>(); if (gameState.Value != GameStates.InGame) { return; } var playerEntity = GetSingletonEntity <Player>(); var player = GetSingleton <Player>(); var playerRot = EntityManager.GetComponentData <Rotation>(playerEntity); var playerTr = EntityManager.GetComponentData <Translation>(playerEntity); m_ElapsedTime += Time.DeltaTime; var timeLimit = 1.0f / player.FireRate; if (m_ElapsedTime > timeLimit) { var missile = EntityManager.Instantiate(player.MissilePrefab); EntityManager.SetComponentData(missile, playerRot); EntityManager.SetComponentData(missile, playerTr); EntityManager.SetComponentData(missile, new PhysicsVelocity { Linear = math.mul(playerRot.Value, new float3(0f, player.FireSpeed, 0f)).xy }); AudioUtils.PlaySound(EntityManager, AudioTypes.PlayerFire); m_ElapsedTime = 0; } }
protected override JobHandle OnUpdate(JobHandle inputDeps) { var gameState = GetSingleton <GameState>(); if (gameState.Value != GameStates.InGame) { return(inputDeps); } var gameStateEntity = GetSingletonEntity <GameState>(); var physicsWorldSystem = World.GetExistingSystem <PhysicsWorldSystem>(); var physicsWorld = physicsWorldSystem.PhysicsWorld; var wasPlayerHit = false; Entities .WithAll <Player>() .WithoutBurst() .ForEach(( Entity e, ref PhysicsColliderBlob collider, ref Translation tr, ref Rotation rot) => { // check with player if (physicsWorld.OverlapCollider( new OverlapColliderInput { Collider = collider.Collider, Transform = new PhysicsTransform(tr.Value, rot.Value), Filter = collider.Collider.Value.Filter }, out OverlapColliderHit hit)) { wasPlayerHit = true; // stop everything EntityManager.SetComponentData(gameStateEntity, new GameState { Value = GameStates.Start }); } }).Run(); if (wasPlayerHit) { AudioUtils.PlaySound(EntityManager, AudioTypes.PlayerExplosion); } return(inputDeps); }
protected override void OnUpdate() { var physicsWorldSystem = World.GetExistingSystem <PhysicsWorldSystem>(); var physicsWorld = physicsWorldSystem.PhysicsWorld; var explosions = GetSingleton <ExplosionSpawner>(); { var didExplode = false; Entities.WithAll <Missile>() .ForEach(( Entity missileEntity, ref PhysicsColliderBlob collider, ref Translation tr, ref Rotation rot) => { // check with missile if (physicsWorld.OverlapCollider( new OverlapColliderInput { Collider = collider.Collider, Transform = new PhysicsTransform(tr.Value, rot.Value), Filter = collider.Collider.Value.Filter }, out OverlapColliderHit hit)) { var asteroidEntity = physicsWorld.AllBodies[hit.PhysicsBodyIndex].Entity; var exp = PostUpdateCommands.Instantiate(explosions.Prefab); PostUpdateCommands.SetComponent(exp, new Translation { Value = tr.Value }); PostUpdateCommands.DestroyEntity(asteroidEntity); PostUpdateCommands.DestroyEntity(missileEntity); didExplode = true; } }); if (didExplode) { var randomSfx = m_Random.NextInt(0, 3); var explosionSfx = randomSfx == 2 ? AudioTypes.AsteroidExplosionLarge : randomSfx == 1 ? AudioTypes.AsteroidExplosionMedium : AudioTypes.AsteroidExplosionSmall; AudioUtils.PlaySound(EntityManager, explosionSfx); } } }
private void PlayMoveSound() { AudioUtils.PlaySound(EntityManager, AudioTypes.PlayerThruster, true); m_IsPlayingMoveSound = true; }