重力を得る賢い方法がわかりません。これで、キャラクターが終わったブロックを検出しますが、そのブロックにはドロップしません!
重力を行うためのより良い方法はありますか?ゲームライブラリなしでこれを実行したいと思います。
重力を得る賢い方法がわかりません。これで、キャラクターが終わったブロックを検出しますが、そのブロックにはドロップしません!
重力を行うためのより良い方法はありますか?ゲームライブラリなしでこれを実行したいと思います。
「重力を得る」とはどういう意味かわかりません。あなたの質問は不明確です。ブロックが終了したことを検出できる場合は、次の式を使用できると思います。
s(t)= ut + 1 / 2at 2
ここs
で、は時間での距離t
、u
は初速度(この場合はゼロ)、a
は加速度(地球上では9.8m / s 2)です。基本的に、その時点で取得する値に基づいてオブジェクトの上部の位置を調整しますt
(so original top position of object + s(t)
)。ある種のアニメーションループを使用すると思います。おそらくsetInterval
。たぶん、Javascriptアニメーションの経験が豊富な他の人は、これを実装するための最良の方法についてチャイムを鳴らすことができます。t
ただし、これは、オブジェクトが落下した場合に、オブジェクトがその時点でどこにあるかを把握するために使用する式になります。
基本的に、プラットフォーマーの重力は次のようになります。
var currentGrav = 0.0;
var gravAdd = 0.5; // add this every iteration of the game loop to currentGrav
var maxGrav = 4.0; // this caps currentGrav
var charPosY = getCharPosY(); // vertical position of the character, in this case the lower end
var colPosY = getColDow(); // some way to get the vertical position of the next "collision"
for(var i = 0; i < Math.abs(Math.ceil(currentGrav)); i++) { // make sure we have "full pixel" values
if (charPosY == colPosY) {
onGround = true;
break; // we hit the ground
}
onGround = false;
charPosY++;
}
ジャンプするには、次のようにするだけです。
if (jumpKeyPressed && onGround) {
currentGrav = -5.0; //
}
必要に応じて (C を理解している場合)、基本的なプラットフォーマー (プラットフォームを移動する) の私のゲームをここでチェックしてください:
http://github.com/BonsaiDen/Norum/blob/master/sources/character.c