トップページへ
 自機の移動動作
・左右移動 サンプルプログラム 左右移動  | 利用規約 | 使い方 | 操作方法 |
■説明
左右のキーを押すと自機が移動します。
ブロックに対する判定を行っており、
左右の壁から先に行かないような形になっています。
■参考
Tonyu System チュートリアル
初めてTonyuを使用される方は上記サイトをご覧ください。
1時間もあればゲームが作れる内容になっています。
サンプルプログラム 左右移動
■プログラムの解説

1.キー入力
  左右キーを押したときに、自機の向きをかえ、向いた方向に移動するように
  します。

      if (getkey(37)>=2) {vx=-wsp;f=-1;}
         //左キーが押されたら速度を-2に、向きを左にする

 *getkey(37)は、左キーが押されたか調べるメソッドです。押しっぱなしの状態で
   2を返すようになっています。
 *wspは自機の歩行スピードで2が入っています。2ドットずつ移動するという
   意味です。
 *vxは自機が実際に移動する速度です。向きを考慮しています。
 *fは自機のキャラクタ画像の向きです。

2.壁の当たり判定
  自機が壁に当たったらそれ以上、向いている方向に行かないようにします。

     WallHit_chk(); //壁の判定
     if (wX!= 0) vx=0; //壁に接しているなら速度を0にする

 *WallHit_chk()では左右の壁の判定を行っています。wXを壁に接しているか
  調べる変数として使っており、状況に応じて以下の数値が入ります。
     ・左の壁に接している場合  : wX=-1
     ・右の壁に接している場合  : wX= 1
     ・左右とも壁に接してない場合 : wX= 0
 *wXがゼロでない場合は壁にぶつかっているので、速度をゼロにして進行方向に
  行かないようにします。

3.移動処理
  歩行アニメーションと実際の自機の移動を行います。

    if (vx!= 0) anim.swing($pat_chara+0,$pat_chara+2,8);
        //↑加速度が0でない(歩行中)なら歩行アニメーション
    x+=vx; //自機のX座標に速度を足す
    vx=0; //速度を0にする

 *移動しているときのみ歩行アニメーションをさせたいので、vxがゼロでないとき
  だけアニメーションを行います。

◆WallHit_chk()の説明

  (例)左壁判定の場合
      wX=0;

     if($map.getAt(x-8+vx,y)==$pat_block+0) wX=-1;



判定点X座標 x-8+vx は壁ぎりぎりのところですが、
 ・左キーが押されるとvxが-2になり、調べる点のパターンが壁($pat_block+0)
  になるため、wXに-1が入ります。
 ・キーが何も押されないとvxが0になり、調べる点のパターンが空間($pat_block+1)
  になるため、wXに0が入ります。

ゲーム制作ソフト
Tonyu System公式サイト




Tonyuとは
ダウンロード
チュートリアル
プロジェクトボード

BBS







プログラムに飽きたら
ゲームでもやってみて
ください。
Tiny Quest
本サイトのサンプル
プログラムを組み合わせて作っています。


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

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