1 / 23

Input Controller ใน XNA

Input Controller ใน XNA. Suphot Sawattiwong tohpus@hotmail.com. อุปกรณ์ควบคุมใน XNA. ใน XNA ได้แบ่งอุปกรณ์ควบคุมเป็นทั้งหมด 3 ประเภท ได้แก่ Keyboard, Mouse, XBOX360 Controller โดยในที่นี้ขอเน้นการใช้งาน Keyboard กับ Mouse. การสนับสนุนอุปกรณ์ควบคุมใน XNA.

odina
Download Presentation

Input Controller ใน XNA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Input Controller ใน XNA SuphotSawattiwong tohpus@hotmail.com

  2. อุปกรณ์ควบคุมใน XNA • ใน XNA ได้แบ่งอุปกรณ์ควบคุมเป็นทั้งหมด 3 ประเภท ได้แก่ Keyboard, Mouse, XBOX360 Controller • โดยในที่นี้ขอเน้นการใช้งาน Keyboard กับ Mouse

  3. การสนับสนุนอุปกรณ์ควบคุมใน XNA • จากตารางเห็นได้ว่าในเครื่อง XBOX360 ไม่มีการสนับสนุน Mouse และ GamePad ที่ใช้ใน XNA ต้องเป็น GamePad ที่สนับสนุน XBOX360 Controller เท่านั้น ไม่เช่นนั้นจะใช้ไม่ได้

  4. Keyboard • ใน XNA แบ่ง Keyboard ที่ใช้แบ่งเป็น 2 ประเภท คือ Keyboard ทั่วไป กับ ChatPad

  5. Keyboard • โดยที่การทำงานหลักของ Keyboard ใน XNA เน้นการใช้งาน 2 Class หลัก ได้แก่ Keyboard และ KeyboardState • โดยมี enums ไว้เรียกอ้างอิงค่าปุ่มต่างๆ ของ Keyboard คือ Keys • วิธีการเรียกใช้ Keyboard สามารถทำได้โดยใน Method Update เช่น

  6. ตัวอย่างการเขียนควบคุม Keyboard ใน XNA protected override void Update(GameTimegameTime) { // ทดสอบการใช้ Keyboard โดยหากกดปุ่ม Escape ให้ออกจากเกม if (Keyboard.GetState().IsKeyDown(Keys.Escape)) { this.Exit(); } base.Update(gameTime); } ดูตัวอย่างใน Ex5_InputKeyboard

  7. Keyboard • ส่วน KeyboardStateเป็นตัวที่แสดงสถานะว่าขณะนี้ keyboard อยู่ในสถานะ KeyDownหรือว่า KeyUp • KeyDownคือจังหวะที่เรากดปุ่ม • KeyUp คือจังหวะที่เราปล่อยปุ่ม

  8. การเอาสถานะของ Keyboard • ชุดคำสั่งการนำสถานะของ Keyboardไปใช้งานสามารถทำได้ผ่านทางชุดคำสั่ง Keyboard.GetState() • หากใช้คำสั่งดังกล่าว ทำให้ได้ค่าของ KeyboardState มาเพื่อพร้อมใช้งานต่อไป โดยชุดคำสั่ง Keyboard.GetState() มีการเรียกใช้ได้ 2 แบบดังนี้

  9. KeyboardState • Method ของ KeyboardStateที่จำเป็นต้องรู้

  10. ตัวอย่างของการรับค่า KeyboardState • ให้เปิดดู Project ที่ชื่อว่า Ex6_InputKeyboardState

  11. Mouse • ใน XNA นั้น Mouse เป็น input ที่สามารถใช้ได้ใน platform Windows เท่านั้น (ไม่สามารถใช้ได้ใน XBOX360) โดย มี Class Mouse และ MouseState • โดย Mouse จะเป็นตัวเชื่อมต่อกับ Hardware • โดยปกติ Mouse Cursor ใน XNA ถูกซ่อนไว้หากต้องการให้เห็น Mouse Cursor ต้องใช้คำสั่งดังต่อไปนี้ใน Class Game1 this.IsMouseVisible= true; ดูตัวอย่างได้ใน Project ชื่อว่า Ex7_InputMouse

  12. Mouse • โดย MouseStateเป็นตัวแสดงสถานะต่างๆ ของ mouse โดยสามารถกำหนดได้ดังนี้ MouseStatemouseState =Mouse.GetState(); ตัวแปรในMouseState มีดังต่อไปนี้

  13. MouseState

  14. MouseState

  15. ButtonState • EnumButtonStateจะเก็บ Event อยู่ 2 แบบ คือ Pressed และ Released โดยอุปกรณ์ควบคุมที่ใช้ ได้แก่ Mouse และ GamePad

  16. ตัวอย่างการ Click Mouse • ให้เปิด Project Ex8_MouseClick ขึ้นมาแล้วรัน เห็นได้ว่าไม่ว่า click mouse ซ้ายตรงไหน ก็เป็นปุ่มทั้งหมด • ซึ่งหากทำเป็นปุ่มกดจริงๆ ต้องรู้จักเรื่องของการชนกัน หรือ Collision Detection ก่อน

  17. Collision Detection • การชนกันของวัตถุ ในเกมเราจะวัดค่าจากการชนได้โดยการดูว่า วัตถุ 2 อันได้มีการ ซ้อนทับกันหรือไม่ • โดย Collision Detect จะเป็นการเช็คว่าวัตถุ 2 ชิ้นนี้ซ้อนทับกันหรือไม่

  18. Collision Detection • โดยจะเอาตำแหน่ง ของวัตถุ ความกว้างยาวของวัตถุมาวาดเป็น สี่เหลี่ยม

  19. Collision Detection • ชุดคำสั่งในการใช้ได้โดยอาศัย Rectangle ในการตรวจสอบเรื่องการชนได้ดังนี้ สี่เหลี่ยมอันที่ 1.Intersects(สี่เหลี่ยมอันที่ 2) เช่น cursorRect.Intersects(playBtnRect) โดยคำสั่งนี้ ได้ส่งค่า true หากเกิดการชนกัน และ false หากไม่มีการชนกันเกิดขึ้น • สามารถดูได้ใน Project Ex9_MouseClick2

  20. Collision Detection • นอกจากการใช้สี่เหลี่ยมในการตรวจสอบการชนแล้ว สามารถใช้ระยะทางระหว่างจุดเพื่อหาการชนได้เช่นเดียวกัน • Collision Detection โดยใช้ระยะห่างระหว่างจุด ทำได้ดังนี้ • หาก ระยะห่างน้อยกว่ารัศมีของ 2 วงกลม แสดงว่ามีการชนเกิดขึ้น x2,y2 ระยะห่าง =10 r1=5 r2=10 x1,y1

  21. ระยะห่างระหว่างจุด 2 จุด • ระยะห่างระหว่างจุด (x1, y1) และ (x2, y2) ทำได้ดังนี้ • Tip: หากต้องการวัดว่าระยะห่าง 2 จุด ระยะใดมากกว่ากัน ก็ไม่จำเป็นต้องใช้ Square Root

  22. Lab5 Mouse Input • ให้วาด Cursor ด้วยรูปต่อไปนี้ • โดยที่ให้วาดตัวหนังสือ แสดงพิกัดของ x,yของ mouse cursor ที่ได้ • ให้ทำการวาดรูปดังต่อไปนี้ลงบนหน้าจอ • หากกด click mouse ซ้าย ให้ทำการเปลี่ยนรูปเป็นรูปต่อไปนี้ • แล้วให้ทำการขยายใหญ่ขึ้นหากยัง clickอยู่

  23. Lab6 เกมเก็บของ • ให้ใช้แม่มดอยู่ด้านล่างสุดของจอ โดยให้แม่มดเป็นตัวที่ใช้เก็บของ • โดยแม่มดสามารถเลื่อนซ้ายเลื่อนขวาได้ • ให้วาดคะแนนอยู่มุมขวาบน • ให้หาทำการปล่อยภาพต่อไปนี้ลงมา • โดย random จุดปล่อยลงมาในแนวแกน x • ให้เก็บเฉพาะภาพสีเหลือง ได้คะแนนภาพละ 100 • หากเป็นภาพสีแดงต้องไม่เก็บ และ คะแนนจะลดลง 100 คะแนนถ้าไปเก็บโดนสีแดง • แต่หากคะแนนน้อยกว่า 0 ให้เท่ากับ 0

More Related