FLASHのアクションスクリプトを使ってゲームを作ってみよう!

FLASHでゲーム作成編


FLASH GAME TUTORIAL 01

タチコマでシューティングゲームに挑戦

タチコマをキーボードで前後左右に操作、左右には加速できるように設定。
function文をつかって、操作キーとスピードが設定しやすいスクリプトを作ってみよう

* タチコマをキーボードで操作 の見本

タチコマをキーボードから前後左右に操作!ヒヨコ(ヒヨコをキーボード操作)でも同じことをしましたが、今回はfunction文をつかって、後から変更や、修正のしやすいスクリプトを練習しましょう!

タチコマって??
攻殻機動隊という超かっこよくておもしろいアニメのキャラクターです。2005年4月から火曜の深夜に日テレで放映中なので是非見てみてください。


* チュートリアルで使うアクションスクリプト

このチュートリアルで使うアクションスクリプトのアクション、イベントハンドラ、メソッド、文法一覧です。以下のアクションスクリプトの要素がわかっていればこのチュートリアルは楽勝です!

では、チュートリアルスタート!

シューティングゲームに挑戦編 チュートリアル01の目標

  1. タチコマを上下左右に動かす
  2. 左右には加速を付ける
  3. 後で修正しやすいスクリプトを目指す

チュートリアル01の概要

キャラクターのムービークリップに

1.onClipEvent(load)でキャラクターを上下左右に動かすための変数、メソッドを定義
2.onClipEvent(enterFrame)で定義したメソッド実行

1.キャラクターのムービークリップをつくる

一番大事!なキャラクターを作って、ムービークリップにしてください。

2.必要な変数を考える

タチコマを動かすのに必要で後で変更したいかも、と思われる値は、
  • スピード
  • 加速度
  • キーコード(どのキーボードのキーでも選べるように)
です。これらの変数を最初に定義しておけば、あとでスピードやキーコードを変えたくなったときに 数値を変更するだけで、スクリプトを読み返さなくてすむ!!はずです。

今回、左右、上下でスピードを変えたかったのでスピードは2つにわけて、
  • 左右のスピード speed_H 上下のスピード speed_V
  • 左右の加速度 ac_H 上下の加速度 ac_V
  • キーコード
    LEFT_KEY_CODERIGHT_KEY_CODEUP_KEY_CODEDOWN_KEY_CODE
とします。

3.必要なメソッドを考える

タチコマを移動させるのに必要なことは、上下左右に動く、です。なので、上に移動するために使うファンクション、下に移動するために使うファンクションというように分けていきます。
  • 上に移動:moveUP() 下に移動:moveDown()
    左に移動:moveLeft() 右に移動:moveRight()
  • 移動をまとめたファンクション:move()
  • 加速度の(仮の)時間をリセットする:reset()

4.アクションスクリプトを書く

タチコマを動かすための変数やメソッドなので、タチコマのムービークリップにムービークリップアクションとしてアクションスクリプトを記述します。

タチコマ(動かしたいキャラクター)のムービークリップをクリックして選択、アクションパネルに下のようなアクションスクリプトを記述します。
//変数、メソッドの定義
onClipEvent (load) {

	//変数の初期化//
	//左右のスピード設定(ac_Hは加速度、 0 のときは加速しない)
	speed_H = 5;
	ac_H = 5;
	
	//上下のスピード設定(ac_Vは加速度、 0 のときは加速しない)
	speed_V = 20;
	ac_V = 0;
	reset();
	
	//押しているキーを知るための変数
	currentKey = LEFT_KEY_CODE;
	
	//操作キー設定
	LEFT_KEY_CODE = 65;
	RIGHT_KEY_CODE = 68;
	UP_KEY_CODE = 87;
	DOWN_KEY_CODE = 83;
	
	//メソッド//
	//加速をつけるための時間を初期化
	function reset() {
		t = 1;
	}
	
	//キー操作メソッド定義
	//上に進む
	function moveUp() {
		if(currentKey != UP_KEY_CODE){
		  reset();
		  currentKey = UP_KEY_CODE;
		}
		this._y -= (speed_V+ac_V*t);
		t++;
	}
	
	//下に進む
	function moveDown() {
		if(currentKey != DOWN_KEY_CODE){
			  reset();
			  currentKey = DOWN_KEY_CODE;
		}
		this._y += (speed_V+ac_V*t);
		t++;
	}
	
	//右に進む
	function moveRight() {
		if(currentKey != RIGHT_KEY_CODE){
		  reset();
		  currentKey = RIGHT_KEY_CODE;
		}
		this._x += (speed_H+ac_H*t);
		t++;
	}
	
	//左に進む
	function moveLeft() {
		if(currentKey != LEFT_KEY_CODE){
		  reset();
		  currentKey = LEFT_KEY_CODE;
		}
		this._x -= (speed_H+ac_H*t);
		t++;
	}
	
	//キーボード操作
	function move() {
		if (Key.isDown(LEFT_KEY_CODE)) {
			moveLeft();
		} else if (Key.isDown(RIGHT_KEY_CODE)) {
			moveRight();
		} else if (Key.isDown(UP_KEY_CODE)) {
			moveUp();
		} else if (Key.isDown(DOWN_KEY_CODE)) {
			moveDown();
		} else {
			reset();
		}
	}
}

//実行
onClipEvent (enterFrame) {
	move();
}




攻殻機動隊 S.A.C

PS2ゲーム発売記念特製
タチコマ
スクリーンセーバー

(windows専用みたいです)

ちなみにこのゲーム、少佐の動きがアニメに忠実で非常にかっこよいです!