[GML]กำหนดสิ่งกีดขวาง (ผู้เริ่มต้น 2) - Printable Version +- irpg Community (https://irpg.in.th) +-- Forum: irpg Fabella Game Maker Academia (https://irpg.in.th/forum-29.html) +--- Forum: The Great Game Maker Library (https://irpg.in.th/forum-31.html) +--- Thread: [GML]กำหนดสิ่งกีดขวาง (ผู้เริ่มต้น 2) (/thread-1387.html) |
[GML]กำหนดสิ่งกีดขวาง (ผู้เริ่มต้น 2) - gol-a-khung - 09-12-2013 GML สวัสดีครับ ผมโกลเอ้คุง จากบทความตอนที่แล้วเป็นการกำหนดค่าเคลื่อนที่ [GML]คำสั่งการเคลื่อนที่ (ผู้เริ่มต้น) ติดตามได้ลิงค์ด้านบนครับ ส่วนในบทนี้จะเป็นการกำหนดสิ่งกีดขวาง ตามตัวอย่างเวลาเราวิ่งอยู่รอบต้นไม้จะไม่ทับหรือเข้าไปอยู่ในต้นไม้ ส่วนด้านบนก็มีใบไม้ปิดเล็กน้อย บทนี้จะมาสอนวิธีทำครับ ตั้งแต่ต้นจนเสร็จตามตัวอย่างครับ ขั้นแรกเปิดไฟล์งานตัวบทสอนของครั้งที่แล้ว ตามตัวอย่าง ผมได้ทำการรวมไฟล์สไปร์ให้อยู่ในกลุ่มเดียวกัน โดยการคลิ๊กขวาที่ Sprites เลือก Create Group ทำการตั้งชื่อ ผมใช้ชื่อ boy แล้วกด OK จากนั้นก็ลากไฟล์สไปร์ไปใส่ใน กลุ่มไฟล์ที่เราตั้งขึ้นครับ ขั้นตอนที่ 2 เราจะทำการสร้างสไปร์ขึ้นมาครับ ตั้งชื่อเป็น spr_wall แล้วทำการแก้ไขรูป คลิ๊กที่ EditSprite ขั้นตอนที่ 3 ทำการสร้างงานขึ้นมาใหม่ กำหนดให้ความกว้างxยาว เท่ากับ 16x16 คลิ๊กที่รูปดินสอเข้าไปวาดรูป ขั้นตอนที่ 4 จากตัวอย่างนะครับ ผมได้ทำการวาดบล็อกขึ้นมา เพื่อใช้ในการกำหนดสิ่งกีดขวางครับ ขั้นตอนที่ 5 ทำการเพิ่มออปเจ็กต์ ตั้งชื่อเป็น obj_wall เลือก Sprite เป็น spr_wall แล้วติ๊กเครื่องหมายถูกหน้า Solid ขั้่นตอนที่ 6 เพิ่มโค้ดที่ obj_boy ต่อท้ายประโยคเงื่อนไขดังต่อไปนี้ if keyboard_check(vk_up)&&place_free(x,y-5) if keyboard_check(vk_down)&&place_free(x,y+5) if keyboard_check(vk_left)&&place_free(x-5,y) if keyboard_check(vk_right)&&place_free(x+5,y) ขั้นตอนที่ 7 ไปที่ห้องสร้างเกมส์ rm_main ที่แทป objecte ให้เราทำการวางออปเจ็กต์เป็นแนว กรอบ เพื่อกันไม่ให้ตัวละครหลุดออกนอกแผนที่ ขั้นตอนที่ 8 สำคัญมาก ตั้งใจนะครับน้องๆ ขั้นตอนนี้สำคัญมากเลยครับ คือการใช้เลเยอร์เพื่อแยกชั้นของการวางสิ่งของลงบนแผนที่ ซึ่งเราสามารถสร้างเลเยอร์กี่ชั้นก็ได้ ในตัวอย่างที่กำหนดมาให้ เริ่มจาก 1ล้าน จนไปถึง -1ล้าน ครับดูไม่ผิดครับ ให้เลเยอร์มาเป็นล้านเลยในการใช้งาน กำหนดไว้ว่า ค่ายิ่งน้อยจะอยู่บนสุด และค่ายิ่งมากจะอยู่ล่างสุดครับ ในตัวอย่างผมได้สร้างไว้ 2 ชั้นคือ ชั้นที่ 999999 กับชั้นที่ -1 จากนั้นจึงวางสิ่งของลงในแผนที่ตามต้องการ ขั้นตอนที่ 9 กำหนดการเดินผ่านของต้นไม้ครับ ผมได้วางบล็อกไว้ที่ตัวต้นไม้ แล้วทำการทดสอบดูว่าสามารถ วิ่งผ่านได้ไหม ตามตัวอย่างดังภาพที่เห็น ขั้นตอนสุดท้่าย ปรับให้บล็อกมองไม่เห็นเวลาเล่นเกมส์ ไปที่ออปเจ็กต์ obj_wall นำเครื่องหมายถูกหน้า Visible ออกครับ แล้วทำการทดสอบเกมส์อีกครั้ง ดังตัวอย่าง และแล้วก็เสร็จตามความต้องการ ตัวแปรน่าจดจำ &&place_free(x,y) ใช้ในการเช็คค่าออปเจ็กต์ไปถึงสิ่งกีดขวาง ดาวน์โหลดตัวอย่างบทสอน ไฟล์ตัวอย่างบทสอนที่ 2 ขอบคุณทุกท่านที่เข้ามาชมครับ บทความ : Gol-a-khung ผิดพลาดประการใดรีบบอกกันเลยนะครับ จะได้ปรับแก้ให้ถูกต้อง RE: [GML]กำหนดสิ่งกีดขวาง (ผู้เริ่มต้น 2) - arkman - 09-13-2013 ผมใช้การสร้างบลอกล่องหนเหมือนกัน แต่เวลาชนใช้คำสั่ง friction แทน แล้วก็เซ็ตตัวเล่นให้เป็น หนสรกfh;pot8iy[ |