在遊戲中聲音是不可或缺之要素之一,在XNA裡提供了播放音效的SoundEffect物件跟播放音樂的MediaPlayer物件,讓我們很容易的使用。
在遊戲中聲音是不可或缺之要素之一,在XNA裡提供了播放音效的SoundEffect物件跟播放音樂的MediaPlayer物件,讓我們很容易的使用。
用來播放一些很短的WAV檔,當作碰撞或爆炸的聲音。
用來播放MP3或WMA檔,當作遊戲背景音樂。
今天我們來實作下面情況,不同的手勢發出不同的聲音。
首先在專案裡載入people.wav及song.mp3資源 (註:text.png是上面那張說明圖面)
在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
程式執行結果如下 (範例下載)
運用不同的聲音搭配圖片素材就可以做出一些簡單幼兒遊戲了。