บทที่ 7: การใช้การตรวจจับการชน (Collision Detection)

วัตถุประสงค์การเรียนรู้

  • นักเรียนจะได้เรียนรู้วิธีการใช้การตรวจจับการชน (Collision Detection) ใน Scratch เพื่อให้ตัวละครสามารถโต้ตอบกับวัตถุหรือสิ่งกีดขวางในเกม
  • นักเรียนจะสามารถสร้างโปรแกรมที่ตรวจจับการชนระหว่างตัวละครกับวัตถุอื่นๆ ในเกม และทำให้เกิดการเปลี่ยนแปลงในเกม เช่น การเพิ่มคะแนนหรือจบเกม

1. การแนะนำการตรวจจับการชน

การตรวจจับการชน (Collision Detection) เป็นวิธีที่ทำให้โปรแกรมรู้ว่าตัวละครสองตัวชนกัน หรือรู้ว่าตัวละครชนกับสิ่งกีดขวางในเกม การใช้การตรวจจับการชนทำให้เกมมีความสมจริงและสร้างความท้าทายให้กับผู้เล่น เช่น การชนกับวัตถุเพื่อเก็บคะแนน หรือการชนกับสิ่งกีดขวางเพื่อจบเกม


2. การใช้บล็อกตรวจจับการชน (Sensing)

ใน Scratch นักเรียนสามารถใช้บล็อกในหมวดการตรวจจับ (Sensing) เพื่อให้โปรแกรมตรวจสอบว่ามีการชนเกิดขึ้นหรือไม่ ตัวอย่างบล็อกที่ใช้ในการตรวจจับการชนได้แก่:

  • แตะ [วัตถุ]: ตรวจสอบว่าตัวละครแตะวัตถุหรือไม่ เช่น แตะขอบเวที หรือตัวละครอื่น
  • แตะสี [สี]: ตรวจสอบว่าตัวละครแตะสีที่กำหนดหรือไม่ เช่น ตัวละครแตะสีของสิ่งกีดขวาง
  • ตำแหน่ง [x, y]: ใช้ตรวจสอบว่าตัวละครอยู่ในตำแหน่งที่กำหนดหรือไม่ เพื่อสร้างการชนทางตำแหน่ง

ตัวอย่าง:
ให้นักเรียนสร้างโปรแกรมที่ตรวจจับการชนระหว่างตัวละครกับสิ่งกีดขวาง เช่น เมื่อแตะขอบเวทีให้แสดงข้อความ "จบเกม"


3. การตรวจจับการชนระหว่างตัวละคร

การตรวจจับการชนระหว่างตัวละครเป็นส่วนสำคัญในการสร้างเกม เช่น การชนกันระหว่างตัวละครกับวัตถุที่สามารถเก็บได้ หรือการหลบสิ่งกีดขวางที่เคลื่อนที่เข้ามาหาตัวละคร นักเรียนสามารถใช้บล็อก "แตะ [ตัวละคร]" เพื่อตรวจจับการชนนี้

  • ใช้บล็อก "แตะ [ชื่อวัตถุ]" เพื่อสร้างการชนระหว่างตัวละครกับสิ่งของในเกม เช่น เมื่อแตะสิ่งของให้เพิ่มคะแนน
  • ใช้บล็อก "ถ้า...แล้ว" (If...Then) เพื่อตรวจสอบเงื่อนไขการชน และให้โปรแกรมทำงาน เช่น เพิ่มคะแนนหรือเปลี่ยนฉาก

ตัวอย่าง:
สร้างเกมที่ตัวละครเก็บของรางวัล เมื่อแตะสิ่งของให้เพิ่มคะแนน และเมื่อคะแนนถึงตามที่กำหนดให้เปลี่ยนฉากไปยังระดับถัดไป


4. การตรวจจับการชนกับสิ่งกีดขวาง

นักเรียนสามารถสร้างเกมที่ตัวละครต้องหลบสิ่งกีดขวางหรือชนกับสิ่งกีดขวางเพื่อให้เกิดการตอบสนองในเกม เช่น เมื่อแตะสิ่งกีดขวางให้ลดคะแนนหรือจบเกม

  • ใช้บล็อก "แตะสี [สี]" เพื่อตรวจสอบว่าตัวละครแตะสิ่งกีดขวางหรือไม่ เช่น เมื่อแตะสีของสิ่งกีดขวางให้จบเกม
  • ใช้บล็อก "ถ้า...แล้ว" (If...Then) เพื่อตรวจสอบการชนกับสิ่งกีดขวางและให้โปรแกรมทำงานตามที่กำหนด

ตัวอย่าง:
สร้างเกมที่ตัวละครต้องหลบสิ่งกีดขวางที่เคลื่อนที่เข้ามา หากแตะสิ่งกีดขวางให้จบเกมทันที


5. การสร้างการโต้ตอบเมื่อเกิดการชน

การตรวจจับการชนไม่เพียงแต่สร้างการตอบสนองที่ชัดเจน เช่น เพิ่มหรือลดคะแนนเท่านั้น แต่ยังสามารถใช้เพื่อสร้างการโต้ตอบที่ซับซ้อนมากขึ้น เช่น การเปลี่ยนฉาก หรือการสร้างเหตุการณ์ใหม่ในเกม

  • ใช้บล็อก "เปลี่ยนฉาก" เมื่อผู้เล่นชนกับวัตถุสำคัญในเกม เพื่อเปลี่ยนไปยังระดับถัดไป
  • ใช้การตรวจจับการชนเพื่อเรียกใช้ฟังก์ชันใหม่ๆ เช่น เพิ่มศัตรูใหม่หรือเพิ่มความเร็วของเกม

ตัวอย่าง:
เมื่อผู้เล่นแตะสิ่งของพิเศษในเกม ให้เปลี่ยนไปยังฉากใหม่ที่มีความท้าทายมากขึ้น


6. สรุปบทเรียน
  • นักเรียนได้เรียนรู้วิธีการใช้การตรวจจับการชน (Collision Detection) เพื่อสร้างการโต้ตอบในเกม ทำให้เกมมีความสมจริงและท้าทายยิ่งขึ้น
  • นักเรียนสามารถสร้างเกมที่มีการตรวจจับการชนระหว่างตัวละครกับวัตถุ หรือสิ่งกีดขวางได้อย่างมีประสิทธิภาพ

กิจกรรมเสริม
ให้นักเรียนสร้างเกมที่มีการตรวจจับการชน เช่น เกมที่ตัวละครต้องหลบสิ่งกีดขวางและเก็บของรางวัล พร้อมทั้งเพิ่มการตอบสนองที่แตกต่างกันเมื่อชนสิ่งต่างๆ ในเกม จากนั้นลองแลกเปลี่ยนเกมกับเพื่อนเพื่อทดสอบ


Free Joomla templates by Ltheme