http://homepage2.nifty.com/natupaji/DxL ... am.html#N2
ジャンプ処理をいろいろいじっているのですが
トレース出来ずにいます。
このソースの肝はこの部分かと思うのですが
// 落下処理
PlayerY -= JumpPower ;
// 落下加速度を加える
JumpPower -= 1 ;
// ジャンプボタンを押していて、地面についていたらジャンプ
if( ( Key & PAD_INPUT_A ) && PlayerY == 300 ) JumpPower = 20 ;
ちょっとわかりません。
真っ先に「?」となる箇所は、
ジャンプボタン押下後にJumpPower = 20がされてますが、
その後、すぐそのJumpPowerをプレイヤーのY軸から引いてますよね?
そしたら、プレイヤーは現場所から、Y軸がマイナス20された場所にワープしてしまうはず。
なのに、実際の実行画面では、プレイヤーは違和感なく、
連続表示されて上昇しております。
これが「なぜ?」なのです。
もちろん、数値を色々触り、調べているのですが、
どうやら、プレイヤーとジャンプの最高地点までの幅、
といった数値決めも無く、
どういう理屈でこちらのジャンプが考えられているのか、トレース出来ません。
わかりやすく解説お願い出来ませんか?
ちなみに、自分がジャンプを考えるならば、
常に重力を与えておき、ジャンプボタンを押している間はY軸座標から-1していく、
みたいな感じですかね、、、。高さを制限するなら、ジャンプの幅を入れる変数をつくり
Y座標から引いている数値がいくらになったら止める、みたいな処理を書く。
そんな感じです。
ですが、熟練された方のジャンプの考え方を学ぼうと思い、
こちらのソースを拝見、実行してみましたが
特に最初に20を入れているのが意味分かりませんでした。
この20は何をさしているのでしょうか、、幅?ですかね。
でもなプレイヤーがワープしないのか、、、んー、わからないです。
※重力計算のジャン案は今回は無しの方向でお願いします。