Transcript pptx
Sound On Game Suphot Sawattiwong [email protected] 1 เสี ยงใน XNA • ใน XNA 3.0 นันสามารถ ้ ใช้ .wav, .mp3 ได้ โดยตรงใน Content Project ได้ เลย และ สามารถในเครื่ องมือ ที่ชื่อ Microsoft Cross-Platform Audio Creation Tool หรือ XACT • สิง่ หนึง่ ที่ต้องจาไว้ วา่ XACT ไม่ใช่โปรแกรมประเภท Sound Editor หากจะต้ องการแก้ หรื อตัดต่อเสียงควรทาให้ เรี ยบร้ อยจาก โปรแกรมอื่นๆ ก่อน 2 มารู ้จกั กับ Wave, Wave Bank, Sound Bank, Cue • Wave เป็ นไฟล์ที่เก็บ Audio Data เพื่อใช้ ได้ อย่างอิสระ หรื อ เพื่อเกมเสียงที่ใช้ ประกอบ effect ในเกม • Wave Bank เป็ นไฟล์ที่เก็บ wave file หลายๆ อันไว้ ด้วยกัน เป็ นกลุม่ อยูใ่ นไฟล์เดียว • Sound Bank เป็ นกลุม่ ของหลายๆ wave bank และ cue • Cue เป็ นไฟล์ที่ยอมให้ Programmerเล่นเสียง โดยประกอบด้ วย เสียงอย่างน้ อย 1 เสียง และอ้ างอิงกับ sound bank 3 การใช้งาน XACT • Click ปุ่ ม Start เมนู และเลือก All Programs. • Click Folder Microsoft XNA Game Studio 3.0 เลือก Tools และ click Microsoft Cross-Platform Audio Creation Tool (XACT) • จากนันให้ ้ ทาการ New Project ขึ ้นมาโดยต้ องนาไฟล์นามสกุล xap ไปใส่ไว้ ใน Folder ที่ต้องการ ควรสร้ างแยกจาก Project XNA ที่เป็ น Visual Studio • เลือก Create Wave Bank • ทาการ ลาก Sound หรื อทาการ insert wave file โดยการ Click ขวา ใน Wave Bank • ก่อนทดสอบการ Play ให้ ไปเปิ ด โปรแกรมชื่อ XACT Audition Utility ก่อน หาได้ จาก Start> All Program>Microsoft XNA Game Studio 3.0>Tools> XACT Audition Utility 4 การใช้งาน XACT • • • • • • • แล้ วทาการ Create Sound Bank ทาการลาก file จาก wave bank มา sound bank แล้ วทาการลาก ไฟล์จาก sound bank ลงไปที่ cue เสร็ จแล้ วให้ ทาการ Build Sound Project ให้ ทาการ save จากนันให้ ้ กลับไปที่ Microsoft Visual C# 2008 Express เปิ ด Project ที่ต้องการใส่เสียง ทาการ add exist item เลือก .xap ที่ทาการ save ไว้ • จากนันให้ ้ ทาการ copy ไฟล์นามสกุล xgs, xsb, xwb ไปไว้ ที่เดียวกัน กับ .xap ซึง่ ในที่นี ้คือ Folder Content 5 การเขียนโปรแกรมเสี ยงโดยใช้ XACT • Method ที่ใช้ ทาการโหลด เสียงที่ดีที่สดุ คงไม่พ้น LoadContent ซึง่ จะสร้ าง Audio Engine, wave และ sound bank ในนี ้ โดยประกาศตัวแปร AudioEngine, WaveBank และ SoundBank เป็ น static ใน Class Game1 • โดย AudioEngine เป็ นตัวแปรที่เก็บค่า XACT Game Setting ไว้ • ส่วน WaveBank และ SoundBank เป็ นการบอก AudioEngine ว่าไฟล์ไหนถูกเรี ยกใช้ งาน 6 การเขียนโปรแกรมเสี ยงโดยใช้ XACT • ดูใน Ex16_SoundTest • ใน Class Game1 ให้ ใส่ตวั แปรดังนี ้ static AudioEngine audio; // ตัวแปรเนี ้เก็บค่า XACT game setting static SoundBank soundBank; static WaveBank waveBank; Cue gameloopCue; //--------- ตัวแปรเก็บ SoundCue • ใน Method LoadContent ให้ ใส่ดงั ต่อไปนี ้ 7 การเขียนโปรแกรมเสี ยงโดยใช้ XACT • ใน Method LoadContent ให้ ใส่ดงั ต่อไปนี ้ protected override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); audio = new AudioEngine("Content\\sound.xgs"); // XACT game setting File soundBank = new SoundBank(audio, "Content\\Sound Bank.xsb"); // XACT Sound Bank file waveBank = new WaveBank(audio, "Content\\Wave Bank.xwb"); // XACT Wave Bank File gameloopCue = soundBank.GetCue("gameloop"); // Cue เป็ นตัวที่ใช้ ในการเล่ นเสียงในเกม } 8 คาสัง่ ในการสัง่ ให้ Play Sound • ใน Class Cue มีคาสัง่ ที่น่าสนใจอยูห่ ลายคาสัง่ ที่ใช้ ประจาดังนี ้ Method Play() Stop() Resume() คาอธิบาย เล่นเพลง หยุดเพลง เล่นเพลงต่อ Pause() หยุดเพลงชัว่ คราว • และยังมี status ที่น่าสนใจไว้ ใช้ ประโยชน์อีกดังนี ้ Method IsPlaying IsPaused คาอธิบาย ถ้ าเป็ นtrue แสดงว่า เพลงกาลังเล่นอยู่ ถ้ าเป็ นtrue แสดงว่าทาการหยุดเพลงชัว่ คราว 9 ตัวอย่าง Code ของการเล่นเพลงโดยใช้ XACT protected override void Update(GameTime gameTime) { if (!gameloopCue.IsPlaying) // ถ้ า gameloopCue ไม่ทาการเล่นอยู่จะเป็ นจริ ง { gameloopCue.Play(); } base.Update(gameTime); } • ดูได้ ใน Project ชื่อว่า SoundTest 10 การเล่น Sound ง่ายๆ ผ่าน Class SoundEffect • ทาการ Add New Item นาเพลงเข้ ามาใน project ใน Folder Content เหมือนกับการโหลดภาพ • จากนันให้ ้ ประกาศตัวแปรใน Class Game1 SoundEffect soundEffect; // ตัวแปร soundEffect • ใน Method LoadContent ให้ ทาตามดังนี ้ protected override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); soundEffect = Content.Load<SoundEffect>(@"gameloop"); // โหลด Content soundEffect.Play(); // เล่นเพลง } 11 ตัวอย่าง Sound Manager ดูใน Ex17_TestSoundManager 12 Lab 9: เกมบวกลบคูณหารให้ได้ 10 สุพจน์ สวัตติวงศ์ อ. สุภทั รชัย พลศักดิ์ อ. เอกนรินทร์ คาคูณ 13 เงื่อนไขเกม • ให้ ทาการบวก ลบ คูณ หาร ตัวเลข ระหว่าง 0-9 เพื่อให้ ได้ 10 หากได้ คะแนน 10 ให้ คะแนนบวกเพิ่มขึ ้นไป 100 คะแนน หากกดปุ่ ม pass ก็ ลบ 50 คะแนน 14 วิธีคิด 1. ให้ ทาการ random ตัวเลข ระหว่าง 0-9 มา 4 ตัว 2. นาตัวเลขลากไปวางโดยใช้ mouse ลงในช่องที่ต้องการ และ Click เครื่ องหมายที่ต้องการใช้ และนาตัวเลขไปใส่ในอีก 1 ช่อง 3. ให้ ทาการคานวณผลลัพธ์ แล้ วให้ ทาการลาก ผลลัพธ์ไปอยู่กบั ตัวเลข ที่เหลือ 4. ทาจนกว่าตัวเลขตัวเดียว และหากตัวเลขนันมี ้ คา่ = 10 ให้ ทาการเพิ่ม คะแนน 100 คะแนน หากไม่ให้ -50 คะแนน รวมถึงหากกดปุ่ ม pass ให้ -50 คะแนนเช่นกัน 15 ตัวอย่างเกมลักษณะนี้ ไม่จาเป็ นต้องมี เวลา กับ undo 16