อยากทราบ logic สำหรับ sliding แบบ rockman [Classic] ครับ - Printable Version +- irpg Community (https://irpg.in.th) +-- Forum: irpg Fabella Game Maker Academia (https://irpg.in.th/forum-29.html) +--- Forum: Game Maker Engine School (https://irpg.in.th/forum-30.html) +--- Thread: อยากทราบ logic สำหรับ sliding แบบ rockman [Classic] ครับ (/thread-724.html) |
อยากทราบ logic สำหรับ sliding แบบ rockman [Classic] ครับ - Holy_Master - 11-02-2012 คือผมทำเกม 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 วินาที ตัวละครจะกลับมาท่ายืนแล้วติดอยู่ในช่องแคบนั้น - -" ผมหวังว่าจะไม่ยากเกินไปนะ RE: อยากทราบ logic สำหรับ sliding แบบ rockman [Classic] ครับ - gol-a-khung - 11-02-2012 เช็คการชนระหว่างต้นทางกับปลายทางครับ ถ้าเส้นทางเป็นแค่แนวตรง หน้าจะใช้ได้ครับ โดยเรานำออปเจ็กแรกวางที่ต้นทาง ออปเจ็กที่สองวางที่ปลายทางออก เมื่อมีการชนทีออปเจ็กแรก กำหนดให้สไปร์ทเป็นท่าสไลด์และเคลื่อนที่ไปตามทิศทางที่ต้องการ เมื่อชนกับออปเจ็กปลายทาง ก็กำหนดให้สร้างสไปร์ทท่ายืนและกำหนดให้สไปร์ทห่างจากออปเจ็กปลายทางเล็กน้อย (กลัวจะบัค) เป็นแค่แนวคิดที่สไลด์ไปด้านใดด้านหนึ่งเท่านั้นครับ ต้องขออภัยถ้ามันใช้ไม่ได้เพราะตัวผมเองก็พึ่งหัดเขียนสคิปเช่นกัน RE: อยากทราบ logic สำหรับ sliding แบบ rockman [Classic] ครับ - Holy_Master - 11-02-2012 โอ้ เป็นแนวคิดที่ง่ายและคาดไม่ถึงมากๆ อันนึงเลย ขอบคุณมากครับ แต่ผม่ทราบว่าคุณมีแนวคิดที่ฝัง code เช็คขนาดพื้นที่ลงบนตัวละครเลยรึเปล่าเพราะนอกจาก slide แล้วคงมี animation อื่นๆที่ผมยังคาดไม่ถึงอีกที่ต้องใช้ประโยชน์จากการเชคขนาดพื้นที่ ซึ่งหากผมเข้าในหลักการทำงานของ function นี้ได้ผมคงเอามันไปใช้งานได้ในหลายๆ กรณีเพื่อให้ gameplay มีความซับซ้อนมากขึ้น RE: อยากทราบ logic สำหรับ sliding แบบ rockman [Classic] ครับ - gol-a-khung - 11-02-2012 นึกออกอีกวิธีครับ อันนี้ใส่สคิปที่ออปเจ็กหลักได้เลย แล้วใช้การเช็คชนออปเจ็กที่อยู่ใต้ออปเจ็กหลัก แนวคิดคือ ถ้ายืนอยู่บนออปเจ็กA(สมมติ) ให้ออปเจ็กหลักสไดล์ไปทิศทางที่ต้องการ เพียงแค่วางออปเจ็กA ต่อๆ กัน ออปเจ็กหลักก็จะเคลือนที่ไปทิศทางที่ต้องการครับ ไม่รู้ใช้ได้ไหมเป็นการเช็คชนธรรมดาๆ เองครับ อีกอย่างไม่ต้องเขียนสคิปให้มากมายด้วย แถมที่ออปเจ็กA ก็ไม่ต้องใส่สคิปเลย RE: อยากทราบ logic สำหรับ sliding แบบ rockman [Classic] ครับ - Holy_Master - 11-08-2012 แล้วก็ยังมีอีกปัญหานึงคือ Double Jump ซึ่งเมื่อก่อนผมใช้ GM8 มันไม่มีปัญหาเลย แต่พอเปลี่ยนมาใช้ GMS Code เดียวกันกลับมีปัญหา ทั้งๆ ที่ logic มันไม่ได้ซับซ้อนเลย Logic ของผมคือ เมื่อตัวละครยืนพื้นจะมีตัวแปรเท่ากับ 0 [และจะคิดเป็น 0 เสมอเมื่อตัวละครสัมผัส collision เท่านั้น] เมื่อตัวละครกระโดดจะนับเป็น 1 ซึ่งหากกดกระโดดอีกทีเมื่ออยู่กลางอากาศจะนับเป็น 2 ซึ่งเมื่อตัวแปรเป็น 2 จะกดกระโดดอีกกี่ 10 ทีตัวละครก็จะไม่กระโดดอีกแล้วจนกว่าจะลงพื้นเพื่อเปลี่ยนตัวแปรกลับเป็น 0 แต่หลังจากที่ logic นี้ใช้ใน GMS ไม่ได้ ผมเลยคิดไม่ออกว่าจะใช้มุขใหนแทน = =" |