ฉันกำลังพยายามสร้างเกมรถง่าย ๆ ที่มีการเปลี่ยนเกียร์แบบแมนนวล อย่างไรก็ตามฉันมีปัญหาเล็กน้อยในการเปลี่ยนเกียร์
นี่คือรหัสปัจจุบันของฉันสำหรับ "รถยนต์":
int gear = 1; // Current gear, initially the 1st
int gearCount = 5; // Total no. of gears
int speed = 0; // Speed (km/h), initially 0
int[] maxSpeedsPerGear = new int[]
{
40, // First gear max. speed at max. RPM
70, // Second gear max. speed at max. RPM
100, // and so on
130,
170
}
int rpm = 0; // Current engine RPM
int maxRPM = 8500; // Max. RPM
public void update(float dt)
{
if(rpm < maxRPM)
{
rpm += 65 / gear; // The higher the gear, the slower the RPM increases
}
speed = (int) ((float)rpm / (float)maxRPM) * (float)maxSpeedsPerGear[gear - 1]);
if(isKeyPressed(Keys.SPACE))
{
if(gear < gearCount)
{
gear++; // Change the gear
rpm -= 3600; // Drop the RPM by a fixed amount
if(rpm < 1500) rpm = 1500; // Just a silly "lower limit" for RPM
}
}
}
อย่างไรก็ตามการใช้งานนี้ไม่ได้ผลจริงๆ เกียร์แรกทำงานได้ดี แต่การเปลี่ยนเกียร์ต่อไปนี้ทำให้ความเร็วลดลง เมื่อเพิ่มข้อความดีบั๊กฉันจะได้รับค่าความเร็วเหล่านี้เมื่อเปลี่ยนที่ จำกัด RPM
Speed at gear 1 before change: 40
Speed after changing from gear 1 to gear 2: 41
Speed at gear 2 before change: 70
Speed after changing from gear 2 to gear 3: 59
Speed at gear 3 before change: 100
Speed after changing from gear 3 to gear 4: 76
Speed at gear 4 before change: 130
Speed after changing from gear 4 to gear 5: 100
อย่างที่คุณเห็นความเร็วหลังจากการเปลี่ยนแปลงแต่ละครั้งช้าลงก่อนการเปลี่ยนแปลง คุณคำนึงถึงความเร็วก่อนเปลี่ยนเกียร์อย่างไรเพื่อไม่ให้ความเร็วลดลงเมื่อเปลี่ยนเกียร์