บทที่ 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) เพื่อสร้างการโต้ตอบในเกม ทำให้เกมมีความสมจริงและท้าทายยิ่งขึ้น
- นักเรียนสามารถสร้างเกมที่มีการตรวจจับการชนระหว่างตัวละครกับวัตถุ หรือสิ่งกีดขวางได้อย่างมีประสิทธิภาพ
กิจกรรมเสริม
ให้นักเรียนสร้างเกมที่มีการตรวจจับการชน เช่น เกมที่ตัวละครต้องหลบสิ่งกีดขวางและเก็บของรางวัล พร้อมทั้งเพิ่มการตอบสนองที่แตกต่างกันเมื่อชนสิ่งต่างๆ ในเกม จากนั้นลองแลกเปลี่ยนเกมกับเพื่อนเพื่อทดสอบ