พื้นหลัง:
ฉันมีปัญหาในการทำให้การกระโดดโค้งถูกต้องสำหรับโปรเจ็กต์ retro platformer ของฉัน เกมดั้งเดิมมีไว้สำหรับ NES และความเร็วของผู้เล่นจะถูกเก็บไว้ในสองส่วน: หนึ่งไบต์สำหรับจำนวนเต็มและอีกส่วนสำหรับเศษส่วน
Gravity ถูกเพิ่มเข้ากับความเร็ว Y ของผู้เล่นในอัตรา 0.25 / เฟรม
เมื่อผู้เล่นกระโดดความเร็ว Y ของเขาถูกตั้งไว้ที่ -4.64453125 ส่วนที่เหลือของเส้นโค้งการกระโดดจะถูกปล่อยให้อยู่กับแรงโน้มถ่วง
ในขณะที่ผู้เล่นเพิ่มความเร็วแนวตั้งของเขาให้เป็น 0 ในอัตรา 0.25 / เฟรม เมื่อความเร็วของผู้เล่นถึงค่าน้อยกว่าศูนย์อย่างไรก็ตามความเร็วจะเปลี่ยนไปตามรูปแบบที่แตกต่างกัน แทนที่จะลดลงเรื่อย ๆ 0.25 ทุกเฟรมมันจะเป็นไปตามรูปแบบนี้:
[1.75, -0.25, -0.25, -0.25, 1.75, -0.25, -0.25, -0.25, 1.75, ...]
ดูเหมือนว่าจะมีบางอย่างเกี่ยวข้องกับจำนวนเต็มล้น
ข้อมูล:
นี่คือดัมพ์ของข้อมูลจากต้นฉบับ มันเป็นตารางความเร็ว
Jump Curve
Y-Hi Y-Lo Decimal Change/Frame
4 165 4.64453125 ?
4 101 4.39453125 -0.25
4 37 4.14453125 -0.25
3 229 3.89453125 -0.25
3 165 3.64453125 -0.25
3 101 3.39453125 -0.25
3 37 3.14453125 -0.25
2 229 2.89453125 -0.25
2 165 2.64453125 -0.25
2 101 2.39453125 -0.25
2 37 2.14453125 -0.25
1 229 1.89453125 -0.25
1 165 1.64453125 -0.25
1 101 1.39453125 -0.25
1 37 1.14453125 -0.25
0 229 0.89453125 -0.25
0 165 0.64453125 -0.25
0 101 0.39453125 -0.25
0 37 0.14453125 -0.25
-1 229 -1.89453125 1.75
-1 165 -1.64453125 -0.25
-1 101 -1.39453125 -0.25
-1 37 -1.14453125 -0.25
-2 229 -2.89453125 1.75
-2 165 -2.64453125 -0.25
-2 101 -2.39453125 -0.25
-2 37 -2.14453125 -0.25
-3 229 -3.89453125 1.75
-3 165 -3.64453125 -0.25
-3 101 -3.39453125 -0.25
-3 37 -3.14453125 -0.25
-4 229 -4.89453125 1.75
-4 165 -4.64453125 -0.25
-4 101 -4.39453125 -0.25
-4 37 -4.14453125 -0.25
-5 229 -5.89453125 1.75
-5 165 -5.64453125 -0.25
-5 101 -5.39453125 -0.25
-5 37 -5.14453125 -0.25
-6 229 -6.89453125 1.75
ปัญหา:
ในเกมของฉันฉันไม่สามารถบรรลุผลนี้ เมื่อความเร็วน้อยกว่าศูนย์มันก็จะลดลงเรื่อย ๆ 0.25 แทนที่จะเป็นรูปแบบที่อธิบายไว้ข้างต้น แทนที่จะเก็บชิ้นส่วนทั้งหมดและเศษส่วนแยกกันฉันกำลังเก็บพวกมันไว้ด้วยกันในทุ่นเดียว
ผลกระทบนี้จะเกิดขึ้นได้อย่างไร?