XNA Basic
สร้างโปรเจค หลังจากติดตั้ง XNA แล้ว เลือก Visual Studio เลือก XNA Studio เลือก template Windows Game
Loop Game ใน XNA จะมี loop game ซึ่งคอยอัพเดตข้อมูลของเกม กับ วาดภาพบนหน้าจอ โดยจะทำงานคล้ายๆ loop
Method ที่สำคัญสำหรับโหลดสิ่งต่างๆ Content.Load<type>(“ชื่อไฟล์ใน content”); ยกตัวอย่าง code Texture2D picture = Content.Load<Texture2D>(“picture”);
การวาดสิ่งต่างๆบนหน้าจอ คำถาม ถ้าเราจะวาดอะไรบนหน้าจอต้องมีอะไรบ้าง? 1 รูปภาพ ใน XNA (support เฉพาะ .jpg,.png,.bmp) 2 ตำแหน่ง แต่ว่าใน XNA จะมีอีกสิ่งหนึ่งที่มันต้องการคือสี ซึ่งมันจะนำไปใช้เป็นโทนสีของภาพ code Texture2D picture; Vector2 position = new Vector2(50,100); spriteBatch.Begin(); spriteBatch.Draw(picture,position,Color.White); spriteBatch.End();
สีมีน้อยไป อยากได้สีอื่นอะ? Code Color ColorPicture = new Color(0,0,0); spriteBatch.Begin(); spriteBatch.Draw(Picture,position,ColorPicture); spriteBatch.End();
การทำภาพอนิเมชั่น ภาพอนิเมชั่น คือ การที่เราแสดงภาพเร็วๆหลายๆภาพ เพื่อสร้างภาพลวงตา ภาพอนิเมชั่นยังต้องมีช่วงเวลาในการเปลี่ยนภาพที่เหมาะสมเพื่อสร้างอนิเมชั่นที่เหมาะสม
การรับ input Method ที่ใช้รับ input KeyboardState Keyboard.Getstate(); GamePadState Gamepad.GetState(PlayerIndex.one); GamePadState และ KeyboardState จะเก็บสถานะว่าปุ่มไหนถูกกด Method ที่ใช้ เช็คว่าปุ่มไหนถูกกด KeyboardState keyboard = Keyboard.GetState(); keyboard.IsKeyDown(Keys.Enter);
การเช็คการชน การชนอย่างน้อยต้องมี 2 ภาพ ก่อนอื่นเรามาเริ่มวาดภาพกัน 2 ภาพ ก่อนหน้านั้นเรามารู้จักกับ Rectangle ก่อน Code Rectangle r = new Rectangle(50,100,300,400); Code การวาดจะเปลี่ยนเล็กน้อย spriteBatch.Draw(picture,r,Color.White); แล้วเราจะรู้ได้อย่างไร ว่าภาพ 2 ภาพ ชนกัน bool r.Intersects(Rectangle value);
การใส่เสียงในโปรเจค ไฟล์เสียงอะไรที่เหมาะในการใช้ใส่เสียง คำตอบคือ .wav แต่ XNA ไม่สามารถนำไฟล์ .wav ไปใช้ได้โดยตรง แล้วต้องทำไง? ต้องใช้ XACT ในการใส่ .wav ให้ XNA Code AudioEngine audio; WaveBank wave; SoundBank sound;
audio = new AudioEngine(@”Content/Sound/Sound audio = new AudioEngine(@”Content/Sound/Sound.xgs”); wave = new WaveBank(audio,@”Content/Sound/WaveBank.x wb”) ; Sound = new SoundBank(audio,@”Content/Sound/SoundBank. xsb”); Sound.PlayCue(“ชือไฟล์เสียง”);
มี code อีกแบบในการเล่นเสียง Cue song = sound.GetCue(“ชื่อไฟล์เสียง”); song.Play(); // เล่นเพลง song.Pause(); // หยุดเล่นเพลง song.Resume(); // กลับมาเล่นเพลง ณ จุดที่หยุด song.Stop(); // ปิดเพลง
การใช้ XACT ก่อนจะใช้ก็ต้องเปิดโปรแกรมก่อน XACT จะถูกติดมาพร้อม XNA อยู่ในส่วนของ tool
การสร้าง project XACT เลือก file menu เลือก new project เลือก new wavebank ที่ wavebank เมนู แล้วลากไฟล์เสียงที่เราอยากใส่เข้าไปในหน้าต่าง wave bank ข้อควรระวัง ไฟล์เสียงควรจะอยู่ที่โฟลเดอร์ content ใน project เพราะ XNA ไม่สามารถมองหาไฟล์ที่อยู่นอก folder content ได้ เลือก new soundbank ที่ soundbank เมนู ลากไฟล์ในหน้าต่าง wave bank เข้ามาในหน้าต่าง soundbank ส่วนบน ลากไฟล์จากส่วนของหน้าต่าง sondbank ส่วนบน เข้ามาในหน้าต่าง soundbank ส่วนล่าง เลือก build แล้ว save project
การใช้ audacity โหลด โปรแกรมตัดต่อเสียงได้จาก http://audacity.sourceforge.net/
Edge Detector This’s called edge Push Button Time ถ้าเราต้องการตรวจจับ อย่างการกดปุ่มเหมือนเกมต่อสู้ ที่กดปุ่มครั้งเดียวแล้วต่อย 1 ที แต่ กดค้างไม่ออก action ต่อยหลายๆครั้ง เราจะต้องมีการตรวจจับการกดปุ่มที่เรียกว่า edge detector Time Push Button This’s called edge
เราจะตรวจสอบ edge ยังไง? จะเห็นได้ว่ามีการเปลี่ยนจากปุ่มไม่ถูกกด เป็นถูกกดในทันที ดังนั้นเราจะต้องตรวจสอบว่า ปุ่มในอดีตไม่ได้ถูกกด และ ปุ่มในปัจจุบันถูกกด This’s called edge Old state Button Button Current State Time