[GML]คำสั่งการเคลื่อนที่ (ผู้เริ่มต้น) - 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]คำสั่งการเคลื่อนที่ (ผู้เริ่มต้น) (/thread-1384.html) |
[GML]คำสั่งการเคลื่อนที่ (ผู้เริ่มต้น) - gol-a-khung - 09-12-2013 GML สวัสดีครับเพื่อนๆ ผมโกลเอ้คุง วันนี้จะมาแนะนำการเขียนโค้ดขั้นต้นครับ โดยผมจะเริ่มอธิบาย ตั้งแต่การเริ่มต้นไปจนถึงการทำให้ตัวละครเคลื่อนไหวครับ ตัวอย่างสิ่งที่ได้ จากตัวอย่างนะครับ เราจะมาเรียนรู้ไปทีละขั้นตอนจนเสร็จดังตัวอย่างครับ เริ่มแรกเลย เราจะต้องเตรียมไฟล์ 1.sprites กับ 2.backgrounds ครับ ส่วน 3.objects กับ 4.rooms นั้น จะเป็นผลที่จะได้จากการจัดเตรียมไฟล์ดังกล่าว เริ่มจากการนำเข้าของไฟล์ภาพสไปร์ก่อนนะครับ จากรูปที่ช่อง Name: ให้เราตั้งชื่อ ผมตั้งเป็น spr_boy ครับ แล้วกดที่ Edit Sprite จะมีหน้าต่างขึ้นมาดังภาพ ให้เราคลิ๊กที่ file / Create from Strip เลือกไฟล์สไปร์ ของผมไฟล์ชื่อ spr_boy เมื่อนำเข้าสไปร์จะมีหน้าต่างการตัดสไปร์ขึ้นมา ทำการตั้งค่าตามตัวอย่างนะครับ เมื่อเสร็จก็กด OK number of images: 12 images per row: 12 image width:24 image height:32 จากนั้นเราจะทำการลบพื้นหลัง คลิ๊กไปที่ Images / Erase a Color สังเกตุจะมี เครื่องมือดูดสี ให้เราดูดสีที่ต้องการลบออก เสร็จขั้นตอนกด OK ตรวจสอบดูแล้วว่าถูกต้อง ทำการคลิ๊กที่เครื่องหมายถูกได้เลยครับ กำหนดจุดกำเนิดภาพ คลิ๊กที่ Center หรือจะตั้งค่าเองก็ได้ตามต้องการ เสร็จกด OK มาถึงขั้นตอนนี้อยากให้เพื่อนๆ ตั้งใจให้มากขึ้นนะครับ ให้คัดลอกไฟล์สไปร์ ต้องการให้ได้ 4 ไฟล์งานครับ ดังภาพ โดย คลิ๊กขวา ไปที่ Duplicate เพื่อเราจะแบ่งเป็นไฟล์สไปร์ 4 ท่าทางด้วยกัน ดังนี้ spr_boy_left คือ ท่าเดินไปทางซ้าย spr_boy_right คือ ท่าเดินไปทางขวา spr_boy_up คือ ท่าเดินขึ้นบน spr_boy_down คือ ท่าเดินลงล่าง โดยเราต้องเข้าไปลบภาพสไปร์ที่เกินออกครับ ให้เหลือภาพตามต้องการ ตามรูปภาพครับ จบขั้นตอนการนำเข้าสไปร์ครับ มาต่อกันที่การนำเข้าภาพพื้นหลัง ซึ่งการนำเข้านั้นจะเหมือนกับการนำเข้าสไปร์ครับ แต่มีจุดต่างกันนิดหน่อยมาดูกันครับ ตั้งชื่อ แล้วคลิ๊ก Edit background ไปที่ File / Open เพื่อนำเข้าภาพ เลือกภาพที่ต้องการ ตัวอย่างผมไฟล์ชื่อ mini_map ลบภาพพื้นหลัง ไปที่ Image / Erase a Color เลือกสีที่ต้องการลบ เสร็จกด OK คลิ๊กเครื่องหมายถูก เมื่อเรียบร้อยแล้ว ให้เราติ๊กเครื่องหมายถูก หน้าช่อง Use as tile set แล้วตั้งค่าตามรูปภาพ tile width: 32 tile height: 32 Use as tile set คือการเปิดโหมดใช้งานภาพแบบกำหนดช่อง คลิ๊ก OK เมื่อเสร็จสิ้น ต่อไปให้เราทำการสร้างห้องเกมส์ ไปที่ settings ทำการตั้งชื่อ แล้วกำหนด ความกว้างxยาว ของห้องเกมส์ ผมกำหนดเป็น 320x320 ไปที่ tiles เพื่อทำการสร้างแผนที่ในห้องเกมส์ วิธีการใช้เมาส์ Shift + เมาส์ซ้าย = วาดภาพแบบต่อเนื่อง เมาส์ขวา = ลบ Ctrl + เมาส์ซ้าย = เคลื่อนย้าย คลิ๊กเครื่องหมายถูกเมื่อเสร็จสิ้น มาถึงขั้นตอนการสร้างออปเจ็กต์ครับ ทำการตั้งชื่อ ผมใช้ obj_boy ครับ จากนั้น คลิ๊กที่ Add Event / Step / Step ตามรูปภาพ เมื่อได้ Events:Step มาแ้ล้วให้เรา ทำการแทรกโค้ด โดยการ คลิ๊กขวาที่ Execute Code ตามรูปภาพ ก็จะได้หน้าต่างโค้ดตามรูปภาพครับ ทำการใส่โค้ดตามด้านล่างนี้ if keyboard_check(vk_nokey) { sprite_index=spr_boy_down; image_index=1; } if keyboard_check(vk_up) { sprite_index=spr_boy_up; image_speed=0.2; y-=4; } if keyboard_check(vk_down) { sprite_index=spr_boy_down; image_speed=0.2; y+=4; } if keyboard_check(vk_left) { sprite_index=spr_boy_left; image_speed=0.2; x-=4; } if keyboard_check(vk_right) { sprite_index=spr_boy_right; image_speed=0.2; x+=4; } เมื่อเสร็จขั้นตอนให้คลิ๊ก เครื่องหมายถูก แล้ว OK จากนั้นให้กลับไป Rooms คลิ๊กที่ ห้องเกมส์ที่เราสร้าง ไปที่ objects แล้วคลิ๊กซ้ายเพื่อวางออปเจ็กต์ในแผนที่เกมส์ เมื่อเสร็จขั้นตอนให้คลิ๊กเครื่องหมายถูก และสุดท้าย RUN เกมส์เพื่อทดสอบครับ ประโยคเงื่อนไข ที่ผมใช้ครับ if (คำสั่งเงื่อนไข) { ผลรับที่ต้องการ ; } else { ผลรับที่ต้องการ ; } ถ้าคำสั่งเงื่อนไขเป็นจริง โปรแกรมจะทำ ผลรับที่ต้องการในปีกกาทันที ถ้าคำสั่งเงื่อนไขเป็นเท็จ โปรแกรมจะทำ ผลรับที่ต้องการในปีกกา else ทันที ตัวแปรที่น่าจดจำ ในตัวแปรที่ผมใช้จะประกอบไปด้วย keyboard_check() คำสั่งตรวจเช็คค่าการกดปุ่มครับ ใช้บ่อยมาก sprite_index ใช้การกำหนดภาพสไปร์ที่ต้องการ ใช้บ่อยเช่นกัน image_speed ความเร็วในการเล่นภาพต่อเนื่อง ใช้บ่อยเช่นกัน x ตำแหน่งในแนวแกน x y ตำแหน่งในแนวแกน y ตัวอย่างคำสั่ง if keyboard_check(vk_up) { sprite_index=spr_boy_up; image_speed=0.2; y-=4; } จากคำสั่งเงื่อนไขด้านบน จะอธิบายได้ว่า ถ้ามีการกดปุ่มลูกศรขึ้น { กำหนดภาพสไปร์เป็น spr_boy_up* ; ความเร็วในการเล่นภาพเป็น 0.2 ; เคลื่อนที่ไปในแนวแกน -y ครั้งละ 4 พิกเซล ; } spr_boy_up* คือ สไปร์ที่เรานำเข้ามาใช้ช่วงแรกครับ จำได้ไหมเอ่ย ดาวน์โหลดไฟล์ ตัวอย่างไฟล์งาน ติดตามบทความที่ 2 ได้ที่ลิงค์ด้านล่างครับ [GML]กำหนดสิ่งกีดขวาง (ผู้เริ่มต้น 2) บทความ : gol-a-khung ขอบคุณครับ RE: [GML]คำสั่งการเคลื่อนที่ (ผู้เริ่มต้น) - นิราจ - 09-12-2013 สอนดีมากครับ |