レーシングゲームを改造しました。
「最高スピードをあげる」
最高スピードが290Km/h では少し物足りなかったので、最高スピードを600Km/h にしました。
上にあるように、最高スピード502Km/h を記録しています。
改造手順
(1)XNA-GSE(C#)を立ち上げて、RacingGame を読み込みます。
(2)右上にあるソリューションエキスプローラを見ます。
見られない場合は、「表示」メニューから、ソリューションエキスプローラを選択してください。
(3)木構造をたどり、C#ファイル(CarPhysics.cs)を表示します。
「RacingGame」-「GameLogic」-「CarPhysics.cs」
(4)ソースの改造
改造するソースは、「CarPhysics.cs」-「Constants」の中だけです。
以下に、改造例(黄色部分)を示します。
public const float DefaultMaxSpeed =
600.0f * MphToMeterPerSec, // 275.0f
MaxPossibleSpeed =
620.0f * MphToMeterPerSec; // 290.0f
public const float DefaultMaxAccelarationPerSec = 5.0f, //2.5f
MaxAccelaration = 100.0f, //5.75f
MinAccelaration = -80.0f; //-3.25f
const float AirFrictionPerSpeed = 0.00f; //0.66f
最高スピードを620Km/h に設定しましたがこれだけではスピードは伸びません。 まず、空気抵抗があるとスピードがでないので空気抵抗を「ゼロ」にしました。真空中でレースしている状態にします。そして、加速度を大きくして容易に速度をあげられるようにしました。
(5)ゲーム物理の理解
このレーシングゲームのゲーム物理を理解するために、参照するソースは、「CarPhysics.cs」-「Update」-「Handle Speed」の中にあります。路面抵抗や空気抵抗の実装についての詳しい説明がありますので興味のある人は一読するとよいでしょう。
空気抵抗
車のスピードが早くなってくると空気抵抗が重要になります。
空気抵抗(airFriction)は車のスピード(speed)に比例して大きくなり、車の進行方向とは逆方向の力(carForce)を車に及ぼし減速させます。以下、空気抵抗の実装例(ソース)です。
float airFriction = AirFrictionPerSpeed * Math.Abs(speed);
carForce *= 1.0f - (0.275f * 0.02125f *
0.2f * //20% for force slowdown
airFriction);
(6)ビルド&プレイ
F5 キーを押すと、改造ゲームがビルドされプレイ画面となります。
ゲームロジック
レースゲームを改造することで、最高スピード500Km/h にすることができました。 実際にゲームをやるとわかるのですが、300Km/h を越えたあたりから操作が難しくなり、マウスではとても車をコントロールできませんでした。ゲームューニングの難しいところなのでしょうか。
2007年5月24日木曜日
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿