Holy_Master   11-02-2012, 09:21 AM
#1
คือผมทำเกม side scrolling คล้ายๆ Rockman อยู่ ซึ่งผมสำเร็จในการศึกษา code ในการทำ action ส่วนใหญ่ เช่นกระโดด วิ่ง วิ่งไปโจมตีไป ได้ ติดอยู่แค่เรื่องเดียวคือพวก action ที่ต้องมีการเช็คความสัมพันธ์ระหว่างขนาดพื้นที่ซึ่งผมดู code มา 10 กว่าเที่ยวแล้วยังจับจุดมันไม่ได้

แนวคิดของผมคือ ถ้าผมสั่งให้ตัวละคร Slide ตัวละครจะออก action slide และเคลื่อนย้ายไปยังตำแหน่งไปเป็นระยะทางตามที่กำหนดเวลาเอาใว้ ok อันนี้ผมเขียนโคดได้ แต่ปัญหาคือผมจะต้องเขียนโคดยังไงเพื่อสั่งตัวละครเคลื่อนย้ายตำแหน่งด้วยท่า slide เป็นระยะทาง infinity เมื่อตัวละครพบว่า collision ที่ตนกำลังเคลื่อนผ่านมีขนาดตามที่กำหนด? เช่น ผ่านช่องแคบที่มีขนาดความสูง 32 ซึ่งหากตัวละครยังไม่พบพื้นที่ที่ใหญ่กว่า 32 ตัวละครจะยังคงสถานะ Sliding ตลอดไป

โคดที่ผมมีตอนนี้ทำงานในลักษณะนี้
เมื่อผู้เล่นกด C------> ตัวละครเปลี่ยงจากท่ายืนเป็น slide ซึ่ง Mask มีความสูงเป็น 50% ของความสูงตัวละครขณะยืนและเคลื่อนที่ด้วยท่านั้นเป็นเวลา 5 วินาที

ปัญหาคือตัวละครสามารถ slide เข้าที่แคบได้แต่เมื่อครบ 5 วินาที ตัวละครจะกลับมาท่ายืนแล้วติดอยู่ในช่องแคบนั้น - -"

ผมหวังว่าจะไม่ยากเกินไปนะ
gol-a-khung   11-02-2012, 09:34 AM
#2
เช็คการชนระหว่างต้นทางกับปลายทางครับ ถ้าเส้นทางเป็นแค่แนวตรง หน้าจะใช้ได้ครับ
โดยเรานำออปเจ็กแรกวางที่ต้นทาง ออปเจ็กที่สองวางที่ปลายทางออก เมื่อมีการชนทีออปเจ็กแรก
กำหนดให้สไปร์ทเป็นท่าสไลด์และเคลื่อนที่ไปตามทิศทางที่ต้องการ เมื่อชนกับออปเจ็กปลายทาง
ก็กำหนดให้สร้างสไปร์ทท่ายืนและกำหนดให้สไปร์ทห่างจากออปเจ็กปลายทางเล็กน้อย (กลัวจะบัค)
เป็นแค่แนวคิดที่สไลด์ไปด้านใดด้านหนึ่งเท่านั้นครับ
ต้องขออภัยถ้ามันใช้ไม่ได้เพราะตัวผมเองก็พึ่งหัดเขียนสคิปเช่นกัน
Holy_Master   11-02-2012, 09:53 AM
#3
โอ้ เป็นแนวคิดที่ง่ายและคาดไม่ถึงมากๆ อันนึงเลย ขอบคุณมากครับ

แต่ผม่ทราบว่าคุณมีแนวคิดที่ฝัง code เช็คขนาดพื้นที่ลงบนตัวละครเลยรึเปล่าเพราะนอกจาก slide แล้วคงมี animation อื่นๆที่ผมยังคาดไม่ถึงอีกที่ต้องใช้ประโยชน์จากการเชคขนาดพื้นที่ ซึ่งหากผมเข้าในหลักการทำงานของ function นี้ได้ผมคงเอามันไปใช้งานได้ในหลายๆ กรณีเพื่อให้ gameplay มีความซับซ้อนมากขึ้น
This post was last modified: 11-08-2012, 11:17 PM by Holy_Master.
gol-a-khung   11-02-2012, 11:31 AM
#4
นึกออกอีกวิธีครับ อันนี้ใส่สคิปที่ออปเจ็กหลักได้เลย แล้วใช้การเช็คชนออปเจ็กที่อยู่ใต้ออปเจ็กหลัก
แนวคิดคือ ถ้ายืนอยู่บนออปเจ็กA(สมมติ) ให้ออปเจ็กหลักสไดล์ไปทิศทางที่ต้องการ เพียงแค่วางออปเจ็กA
ต่อๆ กัน ออปเจ็กหลักก็จะเคลือนที่ไปทิศทางที่ต้องการครับ ไม่รู้ใช้ได้ไหมเป็นการเช็คชนธรรมดาๆ เองครับ
อีกอย่างไม่ต้องเขียนสคิปให้มากมายด้วย แถมที่ออปเจ็กA ก็ไม่ต้องใส่สคิปเลย
Holy_Master   11-08-2012, 11:18 PM
#5
แล้วก็ยังมีอีกปัญหานึงคือ Double Jump ซึ่งเมื่อก่อนผมใช้ GM8 มันไม่มีปัญหาเลย แต่พอเปลี่ยนมาใช้ GMS Code เดียวกันกลับมีปัญหา ทั้งๆ ที่ logic มันไม่ได้ซับซ้อนเลย

Logic ของผมคือ เมื่อตัวละครยืนพื้นจะมีตัวแปรเท่ากับ 0 [และจะคิดเป็น 0 เสมอเมื่อตัวละครสัมผัส collision เท่านั้น] เมื่อตัวละครกระโดดจะนับเป็น 1 ซึ่งหากกดกระโดดอีกทีเมื่ออยู่กลางอากาศจะนับเป็น 2 ซึ่งเมื่อตัวแปรเป็น 2 จะกดกระโดดอีกกี่ 10 ทีตัวละครก็จะไม่กระโดดอีกแล้วจนกว่าจะลงพื้นเพื่อเปลี่ยนตัวแปรกลับเป็น 0

แต่หลังจากที่ logic นี้ใช้ใน GMS ไม่ได้ ผมเลยคิดไม่ออกว่าจะใช้มุขใหนแทน = ="
  
Users browsing this thread: 2 Guest(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.