トップページへ
 自機の移動動作
・ジャンプ動作 サンプルプログラム ジャンプ動作  | 利用規約 | 使い方 | 操作方法 |
■説明
スペースキーでジャンプします。
ブロックの判定に上下方向を付け加えて、なおかつ複数の点で判定することで、「めり込み」の状態を防いでいます。

■参考
自機の移動 - 左右歩行

サンプルプログラム ジャンプ動作
■解説

1.ジャンプ動作をさせる

    if (wY== 1 && getkey(32)==1) {vy=-7;jmp=1;}
           //下の壁に接していて、スペースが押されたらジャンプする

 *wYが1(自機がブロックの上に乗っているという意味)で、スペースキーが
  押された時、ジャンプの処理を行います。(wYはWallHit_chk()というメソッドで、
  自機がいる位置により、値が決定されます)
 *vy=-7で自機のY方向の速度を-7にし、jmp=1でジャンプ中であることを示す
  フラグを立てます。

2.重力の影響をつける

   if (wY== 0) {if($map.getAt(x,y)==$pat_block+1){vy+=0.4;}}
           //上下とも壁がなく、自機が空中にいれば速度を0.4足す

 *ジャンプしたままでは自機がずっと上に移動するだけになるので、自機が
  空中にいる場合は常にY方向の速度を0.4ずつ足しつづけます。


右歩行の時のWallHit_chk()に以下の変更が加えてあります。

  ・Y方向の判定 : ジャンプの要素が加わったため
  ・1方向に対し2点で判定 : めり込みの防止

(例)上壁判定の場合




上の場合、判定点1はブロックに当たっていない状態ですが、
判定点2は当たっていることになります。
複数の点を調べることで、エッジギリギリのところでのジャンプ、着地などで起こるめり込み状態を回避しています。上方向だけでなく、左右下方向についても2点でチェックしています。




|  トップページ | このサイトについて | 利用規約 | ご意見・お問い合わせ |

TonyuアクションRPG - ゲームプログラミング解説 -