09-12-2013, 11:09 PM
GML
สวัสดีครับ ผมโกลเอ้คุง จากบทความตอนที่แล้วเป็นการกำหนดค่าเคลื่อนที่
[GML]คำสั่งการเคลื่อนที่ (ผู้เริ่มต้น)
ติดตามได้ลิงค์ด้านบนครับ ส่วนในบทนี้จะเป็นการกำหนดสิ่งกีดขวาง
![[Image: tst-g-11_zps117b9dd7.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-11_zps117b9dd7.gif)
ตามตัวอย่างเวลาเราวิ่งอยู่รอบต้นไม้จะไม่ทับหรือเข้าไปอยู่ในต้นไม้ ส่วนด้านบนก็มีใบไม้ปิดเล็กน้อย
บทนี้จะมาสอนวิธีทำครับ ตั้งแต่ต้นจนเสร็จตามตัวอย่างครับ
ขั้นแรกเปิดไฟล์งานตัวบทสอนของครั้งที่แล้ว
![[Image: tst-g-01_zps1611a3d4.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-01_zps1611a3d4.gif)
ตามตัวอย่าง ผมได้ทำการรวมไฟล์สไปร์ให้อยู่ในกลุ่มเดียวกัน โดยการคลิ๊กขวาที่ Sprites เลือก Create Group
ทำการตั้งชื่อ ผมใช้ชื่อ boy แล้วกด OK จากนั้นก็ลากไฟล์สไปร์ไปใส่ใน กลุ่มไฟล์ที่เราตั้งขึ้นครับ
ขั้นตอนที่ 2
![[Image: tst-g-02_zps2f44f968.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-02_zps2f44f968.gif)
เราจะทำการสร้างสไปร์ขึ้นมาครับ ตั้งชื่อเป็น spr_wall แล้วทำการแก้ไขรูป คลิ๊กที่ EditSprite
ขั้นตอนที่ 3
![[Image: tst-g-03_zps9ef38258.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-03_zps9ef38258.gif)
ทำการสร้างงานขึ้นมาใหม่ กำหนดให้ความกว้างxยาว เท่ากับ 16x16 คลิ๊กที่รูปดินสอเข้าไปวาดรูป
ขั้นตอนที่ 4
![[Image: tst-g-04_zps567c3ae9.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-04_zps567c3ae9.gif)
จากตัวอย่างนะครับ ผมได้ทำการวาดบล็อกขึ้นมา เพื่อใช้ในการกำหนดสิ่งกีดขวางครับ
ขั้นตอนที่ 5
![[Image: tst-g-05_zps89432b62.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-05_zps89432b62.gif)
ทำการเพิ่มออปเจ็กต์ ตั้งชื่อเป็น obj_wall เลือก Sprite เป็น spr_wall
แล้วติ๊กเครื่องหมายถูกหน้า Solid
ขั้่นตอนที่ 6
![[Image: tst-g-06_zps063a731f.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-06_zps063a731f.gif)
เพิ่มโค้ดที่ 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
![[Image: tst-g-07_zps618fba9e.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-07_zps618fba9e.gif)
ไปที่ห้องสร้างเกมส์ rm_main ที่แทป objecte ให้เราทำการวางออปเจ็กต์เป็นแนว
กรอบ เพื่อกันไม่ให้ตัวละครหลุดออกนอกแผนที่
ขั้นตอนที่ 8 สำคัญมาก ตั้งใจนะครับน้องๆ
![[Image: tst-g-08_zps2f2bdeaa.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-08_zps2f2bdeaa.gif)
ขั้นตอนนี้สำคัญมากเลยครับ คือการใช้เลเยอร์เพื่อแยกชั้นของการวางสิ่งของลงบนแผนที่
ซึ่งเราสามารถสร้างเลเยอร์กี่ชั้นก็ได้ ในตัวอย่างที่กำหนดมาให้ เริ่มจาก 1ล้าน จนไปถึง -1ล้าน
ครับดูไม่ผิดครับ ให้เลเยอร์มาเป็นล้านเลยในการใช้งาน กำหนดไว้ว่า ค่ายิ่งน้อยจะอยู่บนสุด
และค่ายิ่งมากจะอยู่ล่างสุดครับ ในตัวอย่างผมได้สร้างไว้ 2 ชั้นคือ ชั้นที่ 999999 กับชั้นที่ -1
จากนั้นจึงวางสิ่งของลงในแผนที่ตามต้องการ
ขั้นตอนที่ 9
![[Image: tst-g-09_zps291c4797.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-09_zps291c4797.gif)
กำหนดการเดินผ่านของต้นไม้ครับ ผมได้วางบล็อกไว้ที่ตัวต้นไม้ แล้วทำการทดสอบดูว่าสามารถ
วิ่งผ่านได้ไหม ตามตัวอย่างดังภาพที่เห็น
ขั้นตอนสุดท้่าย
![[Image: tst-g-10_zps0c504947.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-10_zps0c504947.gif)
ปรับให้บล็อกมองไม่เห็นเวลาเล่นเกมส์ ไปที่ออปเจ็กต์ obj_wall
นำเครื่องหมายถูกหน้า Visible ออกครับ แล้วทำการทดสอบเกมส์อีกครั้ง
ดังตัวอย่าง
![[Image: tst-g-11_zps117b9dd7.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-11_zps117b9dd7.gif)
และแล้วก็เสร็จตามความต้องการ
ตัวแปรน่าจดจำ
&&place_free(x,y) ใช้ในการเช็คค่าออปเจ็กต์ไปถึงสิ่งกีดขวาง
ดาวน์โหลดตัวอย่างบทสอน
ไฟล์ตัวอย่างบทสอนที่ 2
ขอบคุณทุกท่านที่เข้ามาชมครับ
บทความ : Gol-a-khung
ผิดพลาดประการใดรีบบอกกันเลยนะครับ จะได้ปรับแก้ให้ถูกต้อง
สวัสดีครับ ผมโกลเอ้คุง จากบทความตอนที่แล้วเป็นการกำหนดค่าเคลื่อนที่
[GML]คำสั่งการเคลื่อนที่ (ผู้เริ่มต้น)
ติดตามได้ลิงค์ด้านบนครับ ส่วนในบทนี้จะเป็นการกำหนดสิ่งกีดขวาง
![[Image: tst-g-11_zps117b9dd7.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-11_zps117b9dd7.gif)
ตามตัวอย่างเวลาเราวิ่งอยู่รอบต้นไม้จะไม่ทับหรือเข้าไปอยู่ในต้นไม้ ส่วนด้านบนก็มีใบไม้ปิดเล็กน้อย
บทนี้จะมาสอนวิธีทำครับ ตั้งแต่ต้นจนเสร็จตามตัวอย่างครับ
ขั้นแรกเปิดไฟล์งานตัวบทสอนของครั้งที่แล้ว
![[Image: tst-g-01_zps1611a3d4.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-01_zps1611a3d4.gif)
ตามตัวอย่าง ผมได้ทำการรวมไฟล์สไปร์ให้อยู่ในกลุ่มเดียวกัน โดยการคลิ๊กขวาที่ Sprites เลือก Create Group
ทำการตั้งชื่อ ผมใช้ชื่อ boy แล้วกด OK จากนั้นก็ลากไฟล์สไปร์ไปใส่ใน กลุ่มไฟล์ที่เราตั้งขึ้นครับ
ขั้นตอนที่ 2
![[Image: tst-g-02_zps2f44f968.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-02_zps2f44f968.gif)
เราจะทำการสร้างสไปร์ขึ้นมาครับ ตั้งชื่อเป็น spr_wall แล้วทำการแก้ไขรูป คลิ๊กที่ EditSprite
ขั้นตอนที่ 3
![[Image: tst-g-03_zps9ef38258.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-03_zps9ef38258.gif)
ทำการสร้างงานขึ้นมาใหม่ กำหนดให้ความกว้างxยาว เท่ากับ 16x16 คลิ๊กที่รูปดินสอเข้าไปวาดรูป
ขั้นตอนที่ 4
![[Image: tst-g-04_zps567c3ae9.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-04_zps567c3ae9.gif)
จากตัวอย่างนะครับ ผมได้ทำการวาดบล็อกขึ้นมา เพื่อใช้ในการกำหนดสิ่งกีดขวางครับ
ขั้นตอนที่ 5
![[Image: tst-g-05_zps89432b62.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-05_zps89432b62.gif)
ทำการเพิ่มออปเจ็กต์ ตั้งชื่อเป็น obj_wall เลือก Sprite เป็น spr_wall
แล้วติ๊กเครื่องหมายถูกหน้า Solid
ขั้่นตอนที่ 6
![[Image: tst-g-06_zps063a731f.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-06_zps063a731f.gif)
เพิ่มโค้ดที่ 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
![[Image: tst-g-07_zps618fba9e.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-07_zps618fba9e.gif)
ไปที่ห้องสร้างเกมส์ rm_main ที่แทป objecte ให้เราทำการวางออปเจ็กต์เป็นแนว
กรอบ เพื่อกันไม่ให้ตัวละครหลุดออกนอกแผนที่
ขั้นตอนที่ 8 สำคัญมาก ตั้งใจนะครับน้องๆ
![[Image: tst-g-08_zps2f2bdeaa.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-08_zps2f2bdeaa.gif)
ขั้นตอนนี้สำคัญมากเลยครับ คือการใช้เลเยอร์เพื่อแยกชั้นของการวางสิ่งของลงบนแผนที่
ซึ่งเราสามารถสร้างเลเยอร์กี่ชั้นก็ได้ ในตัวอย่างที่กำหนดมาให้ เริ่มจาก 1ล้าน จนไปถึง -1ล้าน
ครับดูไม่ผิดครับ ให้เลเยอร์มาเป็นล้านเลยในการใช้งาน กำหนดไว้ว่า ค่ายิ่งน้อยจะอยู่บนสุด
และค่ายิ่งมากจะอยู่ล่างสุดครับ ในตัวอย่างผมได้สร้างไว้ 2 ชั้นคือ ชั้นที่ 999999 กับชั้นที่ -1
จากนั้นจึงวางสิ่งของลงในแผนที่ตามต้องการ
ขั้นตอนที่ 9
![[Image: tst-g-09_zps291c4797.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-09_zps291c4797.gif)
กำหนดการเดินผ่านของต้นไม้ครับ ผมได้วางบล็อกไว้ที่ตัวต้นไม้ แล้วทำการทดสอบดูว่าสามารถ
วิ่งผ่านได้ไหม ตามตัวอย่างดังภาพที่เห็น
ขั้นตอนสุดท้่าย
![[Image: tst-g-10_zps0c504947.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-10_zps0c504947.gif)
ปรับให้บล็อกมองไม่เห็นเวลาเล่นเกมส์ ไปที่ออปเจ็กต์ obj_wall
นำเครื่องหมายถูกหน้า Visible ออกครับ แล้วทำการทดสอบเกมส์อีกครั้ง
ดังตัวอย่าง
![[Image: tst-g-11_zps117b9dd7.gif]](http://i464.photobucket.com/albums/rr8/gol-a-khung/TUT/tst-g-11_zps117b9dd7.gif)
และแล้วก็เสร็จตามความต้องการ
ตัวแปรน่าจดจำ
&&place_free(x,y) ใช้ในการเช็คค่าออปเจ็กต์ไปถึงสิ่งกีดขวาง
ดาวน์โหลดตัวอย่างบทสอน
ไฟล์ตัวอย่างบทสอนที่ 2
ขอบคุณทุกท่านที่เข้ามาชมครับ
บทความ : Gol-a-khung
ผิดพลาดประการใดรีบบอกกันเลยนะครับ จะได้ปรับแก้ให้ถูกต้อง