วิธีการรวมแอนิเมชั่นกระโดดเข้ากับ Unity

วันนี้ฉันเสร็จอนิเมชั่นกระโดดครั้งแรกของฉันใน Blender ซึ่งฉันต้องการรวมใน Unity ฉันคิดว่าฉันจะต้องทำอะไรบางอย่างเช่น“ โอเคเมื่อฉันกดปุ่มกระโดดทริกเกอร์แอนิเมชั่นการกระโดดและนั่นแหละ!” ไม่ได้ใกล้เคียง!

ฉันทำสิ่งนี้และผลลัพธ์ก็คือ…ไม่ได้เป็นอย่างที่ฉันคาดไว้

ฉันค่อนข้างมั่นใจว่ากระบวนการที่ฉันอธิบายไว้ก่อนหน้านี้จะใช้งานได้ในบางกรณี แต่น่าเสียดายที่ไม่ใช่ของฉัน

ฉันต้องผ่านวิธีการที่นานกว่านี้

ดูอย่างรวดเร็วในการกระโดด

การกระโดดปกติสามารถแบ่งออกเป็นสามขั้นตอน:

  • แรงกระตุ้นจากการกระโดด: เมื่อตัวละครของเราเริ่มแรงกระตุ้นและกระโดด
  • ขั้นตอนการล้ม: เมื่อตัวละครของเราพยายามคงตัวขณะอยู่ในอากาศ
  • ขั้นตอนการลงจอด: เมื่อตัวละครของเรายังอยู่ในอากาศกำลังเตรียมตัวอยู่กับพื้น

มันทำงานอย่างไรในเกม

เมื่อผู้เล่นกดสเปซบาร์ (ซึ่งเห็นได้ชัดว่าเป็นปุ่มกระโดด) มันจะกระตุ้นการเคลื่อนไหวของการกระโดด

เมื่อผู้เล่นอยู่ในอากาศภาพเคลื่อนไหวอื่น ๆ ก็จะเริ่มต้นขึ้น: ระยะที่ตกลงมาซึ่งจะวนซ้ำจนกว่าจะถึงพื้น

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

ลองคิดดูว่าเราจะมีพฤติกรรมอย่างไรเมื่อเรากระโดด! เมื่อเราเห็นว่าเรากำลังจะโจมตีภาคพื้นดินเรากำลังเตรียมตัวของเราสำหรับ“ ผลกระทบ” เราทำได้เพราะเรามีวิสัยทัศน์ของพื้นดินและสามารถประเมินได้อย่างรวดเร็วเมื่อเราต้องเตรียมพร้อม

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

เคล็ดลับคือการฉายแสงจากตัวละครของเราในทิศทางของความเร็ว จากนั้นเราจะสามารถกระตุ้นการเคลื่อนไหวของท่าในเวลาที่เหมาะสมก่อนที่เราจะไปถึงมัน! 🥳

พร้อมหรือยัง?

การดำเนินการด้วยความสามัคคี

ใน Unity มีเครื่องมือที่ชื่อว่า Raycast ที่จะให้สิ่งที่เราต้องการอย่างแน่นอน

เราดำเนินการในสองขั้นตอน:

  • เราส่ง Raycast ในทิศทางของความเร็วเพื่อกำหนดระยะทางก่อนที่เราจะแตะพื้น
  • หากความเร็วของเราบนแกนตั้ง y ใน Unity เป็นลบ (ซึ่งหมายความว่าเรากำลังล้ม) และพื้นดินอยู่ใกล้เกินไปจากนั้นเราจะกระตุ้นการเคลื่อนไหวของท่าจอด

มันสมบูรณ์แบบ แต่ตอนนี้เมื่อเรากระโดดในเกมสคริปต์จะเปิดภาพเคลื่อนไหวของเราในเวลาที่เหมาะสม สู่ความเวิ้งว้างอันไกลโพ้น! ️