আমি ম্যানুয়াল গিয়ার পরিবর্তনগুলি সহ একটি সাধারণ গাড়ি গেম তৈরি করার চেষ্টা করছি। তবে গিয়ার পরিবর্তনগুলি প্রয়োগ করতে আমার কিছুটা সমস্যা হচ্ছে।
"গাড়ী" এর জন্য আমার বর্তমান কোডটি এখানে:
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
}
}
}
তবে, এই বাস্তবায়ন আসলে কাজ করে না। প্রথম গিয়ারটি সূক্ষ্মভাবে কাজ করে, তবে নিম্নলিখিত গিয়ার পরিবর্তনগুলি গতি হ্রাসের কারণ হয়। কিছু ডিবাগিং বার্তা যুক্ত করে, আরপিএম সীমাতে পরিবর্তন করার সময় আমি এই গতির মানগুলি পাই:
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
আপনি দেখতে পাচ্ছেন, পরিবর্তনের আগে প্রতিটি পরিবর্তনের পরে গতি ধীর হয়। গিয়ার পরিবর্তন করার আগে আপনি গতিটিকে কীভাবে বিবেচনা করবেন যাতে গিয়ারগুলি পরিবর্তন করার সময় গতিটি নামবে না?