目次:
- 単純な漂流動作を取得するには、ユーザーが現在アクセラレータを押しているかどうかにかかわらず、ボートの現在の方向に小さな力ベクトルを追加するだけです。この技法は、空間ベースの動き(アクセルが押されたときにのみ力ベクトルが加えられる)と標準的な自動車挙動(走行方向が常に車両の鼻に追従する)との間の妥協である。各フレームにはそれぞれの動作が少しあります。
- これは非常に簡単な手順です。
あなたのHTML5ゲームで面白い方法で力ベクトルを使うことができます。多くのレースゲームには、スキッドやドリフトのメカニズムがあります。この動作を正確に正しく行うには、非常に洗練された数学が必要ですが、あまりにも多くの労力を費やすことなく、この動作を合理的に近似することができます。
この画像では不十分です。本当にクールなので、実際にはこれを作業プログラムと見なす必要があります。ボートを画面上で動かすと、ボートは漂って滑る。それは本当に面白いです。
<!あなたのゲームオブジェクトに漂流動作を追加する方法単純な漂流動作を取得するには、ユーザーが現在アクセラレータを押しているかどうかにかかわらず、ボートの現在の方向に小さな力ベクトルを追加するだけです。この技法は、空間ベースの動き(アクセルが押されたときにのみ力ベクトルが加えられる)と標準的な自動車挙動(走行方向が常に車両の鼻に追従する)との間の妥協である。各フレームにはそれぞれの動作が少しあります。
<! - 2 - >
ここにコードがあります:
ドリフト。 htmlのvarのゲーム; varボート;関数Boat(){tBoat = new Sprite(ゲーム、 "ボート.png"、100、50); tBoat。 checkKeys = function(){コンソール。ログ(これはスピード)。 if(keysDown [K_LEFT]){これです。 changeImgAngleBy(-5);} if(keysDown [K_RIGHT]){this。 changeImgAngleBy(5);} if(keysDown [K_UP]){this。 addVector(this。getImgAngle()、2);}これは、 addVector(this.getImgAngle()、(this。スピード/ 20));
} // end checkKeys tBoatを終了します。 checkDrag = function(){スピード= this。 getSpeed();速度* =。 95;この。 ();}}}関数init(){game = new Scene();}ゲーム。 setBG( "#000066");ボート=新しいボート();ゲーム。 start();} //終了するinit関数update(){ゲーム。 clear();ボート。 checkKeys();ボート。 checkDrag();ボート。 update();} ゲームのスプライトにドリフトを追加する方法 <! - 3 - >
これは非常に簡単な手順です。
標準の車両モデルを構築する。ボートを作ることを検討してください。
-
加速には力ベクトルを使用します。
再び、速度を手動で制御しているので、addVector()メカニズムは大きな力を与えます。加速力ベクトル(上矢印キープレスで使用)はリテラル値ですが、巨大である必要はありません。実際には、2番目の力ベクトルを追加することになるので、加速ベクトルをトーンダウンしたいことがあります。
-
フレーム毎に小さな力ベクトルを加える。
主力ベクトルは加速するときにのみ発生しますが、フレームごとに2次の小さいベクトルが追加されます。このベクトルは、ボートが現在直面している方向に向いています。この小さな動きベクトルは運動量をシミュレートします。この力ベクトルは、文字通りの値ではなく、速度のパーセンテージであることが重要です。たとえば、常に1ピクセル進むとボートは止まらないでしょう。
