Exemplo n.º 1
0
        /// <summary>
        /// Updates the position of the dog, and plays sounds.
        /// </summary>
        public override void Update(GameTime gameTime, AudioManager audioManager)
        {
            // Set the entity to a fixed position.
            Position = new Vector3(0, 0, -4000);
            Forward = Vector3.Forward;
            Up = Vector3.Up;
            Velocity = Vector3.Zero;

            // If the time delay has run out, start or stop the looping sound.
            // This would normally go on forever, but we stop it after a six
            // second delay, then start it up again after four more seconds.
            timeDelay -= gameTime.ElapsedGameTime;

            if (timeDelay < TimeSpan.Zero)
            {
                if (activeSound == null)
                {
                    // If no sound is currently playing, trigger one.
                    activeSound = audioManager.Play3DSound("DogSound", true, this);

                    timeDelay += TimeSpan.FromSeconds(6);
                }
                else
                {
                    // Otherwise stop the current sound.
                    activeSound.Stop(false);
                    activeSound = null;

                    timeDelay += TimeSpan.FromSeconds(4);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Updates the position of the cat, and plays sounds.
        /// </summary>
        public override void Update(GameTime gameTime, AudioManager audioManager)
        {
            // Move the cat in a big circle.
            double time = gameTime.TotalGameTime.TotalSeconds;

            float dx = (float)-Math.Cos(time);
            float dz = (float)-Math.Sin(time);

            Vector3 newPosition = new Vector3(dx, 0, dz) * 6000;

            // Update entity position and velocity.
            Velocity = newPosition - Position;
            Position = newPosition;
            if (Velocity == Vector3.Zero)
                Forward = Vector3.Forward;
            else
                Forward = Vector3.Normalize(Velocity);

            Up = Vector3.Up;

            // If the time delay has run out, trigger another single-shot sound.
            timeDelay -= gameTime.ElapsedGameTime;

            if (timeDelay < TimeSpan.Zero)
            {
                // For variety, randomly choose between three slightly different
                // variants of the sound (CatSound0, CatSound1, and CatSound2).
                string soundName = "CatSound" + random.Next(3);

                audioManager.Play3DSound(soundName, false, this);

                timeDelay += TimeSpan.FromSeconds(1.25f);
            }
        }
Exemplo n.º 3
0
        public Audio3DGame()
        {
            Content.RootDirectory = "Content";

            graphics = new GraphicsDeviceManager(this);

            audioManager = new AudioManager(this);

            Components.Add(audioManager);

            cat = new Cat();
            dog = new Dog();
        }
Exemplo n.º 4
0
 /// <summary>
 /// Updates the position of the entity, and allows it to play sounds.
 /// </summary>
 public abstract void Update(GameTime gameTime, AudioManager audioManager);