スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[ParaFla]ミニゲーム風

やっぱり夏は暑かった。。

そんなんでスプライトの複製を attachMovie() でやる手法で、
ミニゲーム風なやつを作ってみた。

クリックで別窓。
parafla-nyoro-01.png

マウスにキャラが追尾してきますん。丸を食べさせるとウンチします。ウンチが長くつながってくるんで、ウンチに当たらないように気をつけろ!チミはどこまでウンチを伸ばせるか!

しょぼくてごめんよ。
当たり判定に苦労してですね。
いまいちな感は否めませんがこんなもんで。
以下スクリプトのしょぼい解説。
まずは顔とエサとウンチのスプライトを作成しておく。

・顔のスプライト MC_face
・エサのスプライト MC_food
・ウンチのスプライト MC_body

MC_face のスプライトは、当たり判定用に
一枚スプライト MC_face_hitArea を載せています。
顔の前方の青いところ。
parafla-nyoro-02.png
顔と別のスプライトの当たり判定は MC_face_hitArea で行なう。

MC_face はこんな感じで。
parafla-nyoro-03.png

で、メインはこんな感じでまとめた。
parafla-nyoro-04.png

1.初期設定
2.メイン。ゲームオーバーなら 4 へ
3.2 へ飛ぶ
4.以下ゲームオーバー処理

フレーム 1 の初期設定
haba = 20;
speed = 2;

// 顔のMC
_root.attachMovie("MC_face", "face", 100);
_root.face._x = 100;
_root.face._y = 100;
_root.face.rad = 0;

// ヒット領域隠す
_root.face.face_hit_area._visible = false;

// 胴体のMC
body = new Array();

// 食べ物のMC
_root.attachMovie("MC_food", "food", 2);
_root.food._x = 200;
_root.food._y = 200;


フレーム 2 のメインルーチン
//---------------
// 頭と胴体の当たり判定
//---------------
for (i=1; i<body.length; i++) {
if (_root.face.face_hit_area.hitTest(_root.body[i])) {

// 当たったら終了処理
gotoAndPlay(4);
}
}

//---------------
// 頭が食べ物に当たった
//---------------
if (_root.face.face_hit_area.hitTest(_root.food)) {

// 食べ物移動
_root.food._x = Math.random() * 320;
_root.food._y = Math.random() * 320;

// 胴体追加
i = body.length;
_root.attachMovie("MC_body", "body"+i, 10+i);
body.unshift(eval("body"+i));

if (i < 1) {
rad = face.rad - Math.PI;
body[0]._x = Math.cos(rad) * haba + face._x;
body[0]._y = Math.sin(rad) * haba + face._y;
} else {
body[0]._x = body[1]._x;
body[0]._y = body[1]._y;

// 6個食べるごとにスピードアップ
if (i % 6 == 0) speed += 1;
}
}

//---------------
// 頭移動
//---------------
face.rad = Math.atan2(_root._ymouse - face._y,
_root._xmouse - face._x);
face._x += Math.cos(face.rad) * speed;
face._y += Math.sin(face.rad) * speed;
face._rotation = face.rad * 180 /Math.PI;

//---------------
// 胴体移動
//---------------
for (i=0; i<body.length; i++) {

// 胴体が一つしかない
if (i == 0) {
// 頭に追従
x_diff = face._x - body[i]._x;
y_diff = face._y - body[i]._y;

// 胴体が二つ以上
} else {
// i は i-1 に追従
x_diff = body[i-1]._x - body[i]._x;
y_diff = body[i-1]._y - body[i]._y;
}

rad = Math.atan2(y_diff, x_diff);

if (Math.sqrt(x_diff * x_diff + y_diff * y_diff) > haba) {
body[i]._x += Math.cos(rad) * speed;
body[i]._y += Math.sin(rad) * speed;

} else {
body[i]._x += Math.cos(rad) * speed * 0.1;
body[i]._y += Math.sin(rad) * speed * 0.1;
}
}


フレーム 3
gotoAndPlay(2);


フレーム 40 の終了処理
// MCを消去
removeMovieClip(face);
removeMovieClip(food);

for (i=0; i<body.length; i++) {
removeMovieClip(body[i]);
}
body = null;


テキスト「REPLAY?」はボタンにして押されたらフレーム 1 に飛ぶようにしてます。

いやぁ~結構大変だい…
スプライトの移動とか当たり判定は、スプライトのフレームアクション中にイベントハンドラとして書いたほうが良かったかいな。いろいろ試行中。
スポンサーサイト

Trackback

ミニゲーム
ミニゲームミニゲームは、小規模なゲームのこと。スポーツ(特に球技)やコンピュータゲームについて用いる。本項目ではコンピュータゲームにおけるミニゲームについて解説する。コンピュータゲームの中に含まれる短いゲームのことをミニゲーム(サブゲー
2007.08.05 02:59 | みくの部屋
Trackback URL
http://kmurai.blog52.fc2.com/tb.php/63-c3686bca

Comment

Comment Form
公開設定

プロフィール

わたし

Author:わたし
ようこそ”わたし”のブログへ。頚椎損傷(C5)で電動車いすに乗ってます。
パソコンで作ったくだらない物とかその製作過程なんかを載せて行くような気がする。

カテゴリー
罪ほろぼし

最近の記事
ユーザータグ
最近のコメント
最近のトラックバック
月別アーカイブ
ブログ内検索
RSSフィード
リンク
このブログをリンクに追加する
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。