मैं मैनुअल गियर परिवर्तन के साथ एक साधारण कार गेम बनाने की कोशिश कर रहा हूं। हालाँकि, मुझे गियर परिवर्तन को लागू करने में थोड़ी परेशानी हो रही है।
यहाँ "कार" के लिए मेरा वर्तमान कोड है:
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
जैसा कि आप देख सकते हैं, प्रत्येक परिवर्तन के बाद की गति परिवर्तन से पहले धीमी होती है। गियर बदलने से पहले आप गति को कैसे ध्यान में रखेंगे ताकि गियर बदलते समय गति कम न हो?