====== 自機弾の発射(垂直上方向) ====== この講座では、自機弾が発射され移動するプログラムを作成します。 ====== 準備 ====== 自機の操作のプログラムが必要です。 プログラムがない場合は、ダウンロードしてプログラムを上書きしてください。 {{ :source_move.zip |自機の操作プログラム}} ====== 自機弾の発射 ====== <> if(KZ() && timer1==0){ //Zキーを押して且つ待ち時間が0の時 PMissileSet(x,y,0,-10); //x,yの位置から増分0,-10で移動する自機弾を発射 timer1=10; //待ち時間10フレーム }  変数timer1は、タイマー用変数です。1フレーム経過すると自動的に1減少し、0になると自動的に停止する変数です。timer2も同様の使用が可能です。出現時に、プログラムからタイマーの初期値を指定していない場合、次の値が自動的に初期値として代入されます。 ^ 変数名 ^ 説明 ^ 初期値(未設定の場合) ^^ ^ ::: ^ ::: ^ 自機出現時 ^ 自機弾、敵機、敵機弾出現時 ^ | timer1 | タイマー用変数1 | 0 | 50 | | timer2 | タイマー用変数2 | 0 | 0 |  自機出現時の初期値は、上の表から0が与えられます。これは、ゲームスタート後に直ぐに自機弾が発射できるという意味です。  KZ()(Zキーを押したとき)且つ待ち時間が0の時に、PMissieSetを使用し自機弾を発射させています。 ^ 関数 ^ 説明 ^ | PMissileSet(x,y,dx,dy);| 自機弾を出現させる(最大100体) |  PMissileSetの関数の引数は、x軸,y軸の初期位置とx軸,y軸の増分dx,dyを順番に入力します。ここでは、自機と同じ位置から出現させ、垂直上方向に移動させるためにx,y,0,-10の値が入力されています。入力された値は、自機弾の変数x,y,dx,dyに保存されます。 ====== しかし、このままでは、実行ボタンを押しても敵機は出現しません。その理由を考えてみます。 ====== ^ 考えられる原因 ^ 解決方法 ^ | 移動量は記述したが、\\ 実際に移動していない | 自機弾に移動するプログラム\\ を記述する | <> x=x+dx; y=y+dy; {{:fig_pmissileset.png?400|}} * 課題)自機弾の移動方向を変えてみよう * Next. [[ch_enemymove1|敵機の移動(一方向のみ移動)]] * Prev. [[ch_playermove|自機の操作(上下左右に動作)]] * Top. [[manual|ConnectSTG マニュアル]]