XNA 音效與音樂

  • 4033
  • 0

在遊戲中聲音是不可或缺之要素之一,在XNA裡提供了播放音效的SoundEffect物件跟播放音樂的MediaPlayer物件,讓我們很容易的使用。

在遊戲中聲音是不可或缺之要素之一,在XNA裡提供了播放音效的SoundEffect物件跟播放音樂的MediaPlayer物件,讓我們很容易的使用。

 

list_b 音效

用來播放一些很短的WAV檔,當作碰撞或爆炸的聲音。

 

list_b 音樂

用來播放MP3或WMA檔,當作遊戲背景音樂。

 

今天我們來實作下面情況,不同的手勢發出不同的聲音。

text

 

首先在專案裡載入people.wav及song.mp3資源 (註:text.png是上面那張說明圖面)

image

 

 

在Game1宣告變數,包括一個音效物件及歌曲物件

Public Class Game1
    Inherits Microsoft.Xna.Framework.Game
 
    Private WithEvents graphics As GraphicsDeviceManager
    Private WithEvents spriteBatch As SpriteBatch
 
    Dim people As SoundEffect
    Dim song As Song
 
    Dim text As Texture2D
End Class

 

在Initialize()啟用手勢監聽,這裡起用了三種手勢。

Protected Overrides Sub Initialize()
        ' TODO: Add your initialization logic here
        TouchPanel.EnabledGestures = GestureType.Tap Or GestureType.Flick Or GestureType.Hold
        MyBase.Initialize()
End Sub

 

在LoadContent()跟圖片一樣方式載入音效及音樂資源

Protected Overrides Sub LoadContent()
        ' Create a new SpriteBatch, which can be used to draw textures.
        spriteBatch = New SpriteBatch(GraphicsDevice)
 
        ' TODO: use Me.Content to load your game content here
        people = Content.Load(Of SoundEffect)("people")
        song = Content.Load(Of Song)("song")
        text = Content.Load(Of Texture2D)("text")
End Sub

 

在Update()撰寫不同手勢產生不同音效,音效播放有兩個多載,第二個多載參數分別是音量大小(-1~1)、音調(-1~1)、左右聲道,利用調整音調Windows Phone也可以開發會說話的湯姆貓喔,音樂要用MediaPlayer來播放。

Protected Overrides Sub Update(ByVal gameTime As GameTime)
        ' Allows the game to exit
        If GamePad.GetState(PlayerIndex.One).Buttons.Back = ButtonState.Pressed Then
            Me.Exit()
        End If
 
        ' TODO: Add your update logic here
        While (TouchPanel.IsGestureAvailable)
            Dim gesture As GestureSample
            gesture = TouchPanel.ReadGesture
 
            Select Case gesture.GestureType
                Case GestureType.Tap
                    people.Play()
                Case GestureType.Hold
                    people.Play(1, 0.6, 0)
                Case GestureType.Flick
                    MediaPlayer.Play(song)
                Case Else
 
            End Select
        End While
 
        MyBase.Update(gameTime)
End Sub

 

程式執行結果如下 (範例下載)

運用不同的聲音搭配圖片素材就可以做出一些簡單幼兒遊戲了。

screenshot_10-29-2011_3.5.59.824