ผู้เล่นขยับขึ้นเขากระโดดหรือปีนเขาไหม?


11

ในเกม platformer ที่ใช้ฟิสิกส์ 2 มิติที่มีบันไดอยู่คุณจะทราบได้อย่างไรว่าผู้เล่นขยับขึ้นมาจากการกระโดดหรือเขาปีนบันไดเช่นที่คุณรู้ว่าจะเล่นภาพเคลื่อนไหวอย่างไร

และโดยทั่วไปแล้วเวกเตอร์บอกทิศทางไม่เพียงพอที่จะกำหนดภาพเคลื่อนไหวที่จะเล่น: คุณจะทราบสาเหตุของการเคลื่อนไหวได้อย่างไร (เพื่อให้คุณทราบว่าสไปรต์ที่ถูกต้องที่จะใช้)


1
หากผู้เล่นอยู่บนบันไดเขาอยู่ในอากาศจริงๆหรือ?
Derek

คำตอบ:


15

ฉันมีปัญหาตรรกะส่วนบุคคลเป็นประจำที่คุณดูเหมือนจะแสดงที่นี่ นั่นคือบางครั้งคุณกำลังมองหาตรรกะและการเขียนโปรแกรมจากทิศทางที่ผิดทั้งหมด ในกรณีนี้คุณดูเหมือนจะไม่ตระหนักว่าตั้งแต่ต้นคุณรู้ว่าเกิดอะไรขึ้นเนื่องจากรหัสตรรกะ คุณควรรู้แล้วว่ากำลังพูดโดยทางโปรแกรมไม่ว่าเขาจะอยู่บนบันไดหรือไม่ก็ตาม

คิดเกี่ยวกับมัน (ดังที่ฉันพูดฉันมักจะมีปัญหานี้) ตรรกะของเกมควรรู้ว่าคุณอยู่บนบันไดหากว่าคุณเป็นโปรแกรมเมอร์ที่ชาญฉลาด สำหรับคำอธิบายที่ดีกว่าฉันมีประเภทไฟล์เก็บถาวรและใช้เวลาประมาณหนึ่งชั่วโมงต่อวันในการหาขนาดของข้อมูลและฉันไม่เคยหยุดคิดเลยว่าเมื่อฉันโหลดไฟล์ฉันก็เลย รู้ขนาดของมัน: P

เหตุผลที่สิ่งนี้มีความเกี่ยวข้องโดยเฉพาะคือคุณกำลังมองว่าเป็น "ตอนนี้ฉันอยู่ในอากาศแล้วฉันจะรู้ได้อย่างไรว่าฉันอยู่บนบันไดหรือกระโดด?" ... เมื่อคุณควรจริง ๆ คิดว่า "ฉันกำลังจะขึ้นไปบนอากาศ แต่โดยวิธีแรกที่ทำให้ฉันสามารถใช้มันสำหรับภาพเคลื่อนไหวที่ใช้"


ง่าย ๆ เช่น: OnJump()เปลี่ยนjumpingบูลีนของคุณให้เป็นจริงแล้วถ้าคุณอยู่ในอากาศและjumpingเป็นเท็จคุณก็จะล้มหรืออยู่บนบันได ฯลฯ
Joshua Hedges

6

ระบบฟิสิกส์ไม่รู้หรือไม่สนใจว่าทำไมผู้เล่นจึงเคลื่อนที่ไปในทิศทางใดทิศทางหนึ่ง มันเป็นเกมของคุณที่ทำให้ระบบฟิสิกส์ย้ายผู้เล่นไปทางนั้นและดังนั้นจึงเป็นความรับผิดชอบของเกมของคุณในการติดตามสิ่งนั้น เอนทิตีของผู้เล่นควรมีสถานะบางอย่างที่จะบอกได้ว่ามันคือการกระโดด, ปีนเขา, วิ่ง, ฯลฯ คุณไม่ควรพยายามที่จะคิดออกตามสิ่งที่เกิดขึ้นกับระบบฟิสิกส์


2

ดูเหมือนว่าเหตุการณ์ที่เคยเกิดขึ้นจากการชนที่ทำให้ผู้เล่นตั้งค่าความเร็วแนวตั้งสามารถใช้เพื่อตั้งค่าสถานะเพื่อระบุว่าจะใช้ภาพเคลื่อนไหวประเภทใด

หากคุณกำลังใช้ห้องสมุดบุคคลที่สามซึ่งมีข้อ จำกัด มากเกินไปกับข้อมูลที่ให้คุณอาจเป็นไปได้ที่จะล้อมรอบบันไดด้วยสี่เหลี่ยมและหากผู้เล่นขยับขึ้นและอยู่ในสี่เหลี่ยมผืนผ้านั้นให้ทำแอนิเมชั่นการปีนเขา


นี่เป็นจุดที่ดีที่ฉันจะกล่าวถึงต่อไปในการพัฒนาเกมของฉันเองและนั่นคือวิธีการเปลี่ยนความเร็วของภาพเคลื่อนไหวตามฟิสิกส์ ฉันมีตัวละครที่ฉันอยากจะเหวี่ยงแขนของพวกเขาตามขั้นตอนเร็วขึ้นตามความเร็วที่พวกมันตกลงมา และฉันไม่เคยคิดถึงวิธีที่ดีที่จะทำมันในเชิงลึก (กำลังคิดอยู่ตลอดเวลา) แต่คุณคิดว่าความเร็วนั้นดีกว่ามาก +1 สำหรับคำตอบที่ใช้งานทั่วไปและไม่เจาะจงเฉพาะกรณีของเขา
Joshua Hedges

1

เมื่อตั้งค่าความเร็วการกระโดดก็ให้ตั้งค่าสถานะของอักขระเป็น STATE_JUMPING การทำเช่นนี้คุณรู้อยู่เสมอว่ารัฐอยู่ในสถานะของโปรแกรมเล่นและสามารถทำตามได้โดยการตรวจสอบสถานะของผู้เล่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.