トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     ランダムに動く生物
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
shin_000
Åê¹ÆNo.21784
投稿日時: 2005-11-30 5:01
新米
居住地:
投稿: 5
使用環境:
WinXP,Flash MX,MX2004
ランダムに動く生物
初めまして。
実は今、たまごっちのような飼育ゲームを作りたいと思っています。
そこで、生き物をランダムで歩いたり遊んだり寝たりと動くようにしたいのですが、なかなかうまくいきません。
今のところ、生き物のインスタンスを作って
タイムライン上に立っている状態、歩いている状態、などの絵を用意して、スクリプトで

n = Math.random()*100;
if (n>90) {
//歩く
gotoAndPlay("歩く");
} else {
//何もしない
gotoAndPlay("通常");
}

と、それぞれのアニメーションにとばし、
その飛び先で

n = Math.random()*100;
if (n>90) {
//通常に戻る
gotoAndPlay("通常");
} else {
//歩き続ける
this._x+=5;
gotoAndPlay("歩き");
}

と言うように無理矢理分岐させています。
しかし、このやり方だと分岐が増えるとちゃんとできるか心配です。
最初の分岐だけでも「通常」「歩き右」「歩き左」「手前」「奥へ」など、増えていくと、ランダム分岐がどんどん長くなってしまいそうです。
さらに、飛び先にもいちいち元に戻すためのスクリプトをタイムライン上に入れないとならないので、さらに混乱しそうです。

一括で管理できないかとタイムライン上ではなくインスタンス上のスクリプトで

onClipEvent (enterFrame) {
n = Math.random()*100;
if (n>60) {
//歩く右
_parent.gotoAndPlay("歩く右");
} else if (n>30) {
//歩く左
_parent.gotoAndPlay("歩く左");
} else {
//何もしない
_parent.gotoAndPlay("通常");
}
}

ともやってみましたが、これだと長くなってしまうのは変わらないし、
常にランダム分岐してしまって「歩き続ける」などをどうやって作ったらいいかわかりません。

今の自分の知識ではこれ以外でどうやったらいいのかわかりません。
こういう状態ではどういうやり方が一番いいんでしょうか?
ご指導お願いしますm(__)m


・制作環境
ウィンドウズXP
FLASH MX

・完成最終目的
たまごっちのような飼育ゲーム
普段はランダムで行動する生物を見て楽しむ。
右へ行ったり、左へ行ったり、ジャンプしたり、眠ったり、
ランダムでいろんな行動をする。
将来的には、時間がたつとお腹がすいたり、病気になったり、
状況に合わせて餌をあげたり、クリックすると反応したり、
ドラッグで運べたりできるようにしたい。
森 巧尚
Åê¹ÆNo.21785
投稿日時: 2005-11-30 10:30
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: ランダムに動く生物
こんにちは。
僕もshin_000さんの最初のやり方はときどき使いますよ。「分岐がどんどん長くなって混乱しそう」とのことですが、動きが変化していく様子をそのまま作れるのでめんどくさそうなだけで、プログラム的にはシンプルに作れます。どっちにしろキャラクターにさせる動作は全部自分で準備しないといけないわけですから、その準備をしながら状態の変わり方を紙などに書いてまとめておくといいですよ。
できたときには面白いものでも、作るときにはとても地道な作業が必要だったりします。

2つ目の方法でonClipEvent (enterFrame) を使ってますが、このままだと常に状態が変化し続けてしまいます。キャラクターは「状態が変化する」だけでなく「変化した状態をしばらく続ける」ことも必要なので、その2つのモードを切り替えるしくみも必要ですね。カウンターを用意して、enterFrameの中で切り替えるようにすればいいと思います。この方法だと「それぞれの状態がどのぐらい続くか」はそれぞれの状態に切り替わったときにカウンターで決められます。
onClipEvent (load) {
	count = 0;
}
onClipEvent (enterFrame) {
	if (0 < count) {
		count--;
	} else {
		n = Math.random() * 100;
		if (n > 60) {
			//歩く右
			count = 10;
			_parent.gotoAndPlay("歩く右");
		} else if (n > 30) {
			//歩く左
			count = 20;
			_parent.gotoAndPlay("歩く左");
		} else {
			//何もしない
			count = 30;
			_parent.gotoAndPlay("通常");
		}
	}
}


----------------
森 巧尚
http://www.ymori.com

ebi
Åê¹ÆNo.21787
投稿日時: 2005-11-30 10:58
フォーラム芸人
居住地: nagoya
投稿: 926
使用環境:
.6.8
CS6
<参考書>
・基本からしっかりわかるActionScript 3.0(既読)
・ActionScript3.0プロフェッショナルガイド(進行中)
・ActionScript3.0パフォーマンスチューニング(未読)
・ActionScript 3.0 逆引きクイックリファレンス(購入予定...
Re: ランダムに動く生物
ebiです。おはようさんです。

shin_000さん、はじめまして。

まぁある程度、複雑になるのは仕方ないと思いますよ...
引用:
飛び先にもいちいち元に戻すためのスクリプトをタイムライン上に入れないとならないので

これが、面倒(混乱?)と言われると...

では、主旨。惜しいです! もうちょっと考えられたら、お分かりになった事かもです。現在は動きの一瞬一瞬を「いつはじめるか」でランダム分岐させてますよね? そうでなく「動き」を一連で作っておいて1つ1つで管理、「いつやめるか」でランダム分岐させるって方法をとるんです。

例によって“あくまで例”ですが、

まず動き(ジャンプーだの歩きーだの)ごとにムービークリップを作ります。

繰り返すタイプの動きはその最後のフレームに
引用:
if (random(2)==0) {
gotoAndPlay(1);
}else{
_parent.gotoAndStop(1);
}

とします。

繰り返さず1回だけ再生タイプの動きは最後のフレームに単に
引用:
_parent.gotoAndStop(1);


で、それらは全て子ムービークリップ。
親ムービークリップを作って、子の数分キーフレームを作り、
「歩き」とか「ジャンプ」とか「何もしない」とラベルつけます。
次にラベルに対応する子ムービークリップを配置します。

あとは、親ムービークリップの1フレーム目に、

引用:

n=random(100)
if (n>60) {
//歩く
gotoAndStop("歩く");
} else if (n>30) {
//ジャンプ
gotoAndStop("ジャンプ");
} else {
//何もしない
gotoAndStop("通常");
}
※Stopです。飛び先で子ムービークリップが勝手に動き出すので
とします。

これで、動き1つ1つで管理・編集できるようになりますので、扱いやすくなると思いますが、どうでしょ?
ebi
Åê¹ÆNo.21796
投稿日時: 2005-11-30 13:26
フォーラム芸人
居住地: nagoya
投稿: 926
使用環境:
.6.8
CS6
<参考書>
・基本からしっかりわかるActionScript 3.0(既読)
・ActionScript3.0プロフェッショナルガイド(進行中)
・ActionScript3.0パフォーマンスチューニング(未読)
・ActionScript 3.0 逆引きクイックリファレンス(購入予定...
Re: ランダムに動く生物
ebiです。
時間あったのでチョロっと作ってみました。

http://www.geocities.jp/blood_plot/ikimono.html

動きは、歩く・ジャンプ・眠る・通常しかないですが。
(「歩く」は歩くmc内で上下左右に動かしてます)
突貫なので、ぎこちないし、つまんないですが、
いろいろ工夫すれば生き物らしくなると思います。

生き物くんをクリックすると、
flaファイルをダウンロードできます。
shin_000
Åê¹ÆNo.21825
投稿日時: 2005-12-1 0:49
新米
居住地:
投稿: 5
使用環境:
WinXP,Flash MX,MX2004
Re: ランダムに動く生物
>森 巧尚 さま
レスありがとうございます。
なるほど、カウンターですか。
これは知りませんでした。
たしかに、これを使えば同じ動きを一定時関させることができますね。
カウントの数字の大きさで時間も自由に変えられるんですね。
すごく参考になりました!
ありがとうございますm(_ _)m

>ebi さま
レスありがとうございます。
動きのムービークリップをバラバラに作って
動きごとに管理するわけですね。
動きを変えたかったら個々のインスタンスを見ればいいので確かに混乱はしなそうですね。
なるほど…
サンプルも作ってくれたみたいでとてもうれしいです!
でも、なぜかサンプルを開くことができませんTT
生き物くんをクリックしてikimono.flaをダウンロードしたんですが、
開くと「予期しないファイル形式です」といわれてしまいます。
バージョンが違うのでしょうか?
ひろゆき
Åê¹ÆNo.21866
投稿日時: 2005-12-2 16:10
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: ランダムに動く生物
引用:
でも、なぜかサンプルを開くことができませんTT
生き物くんをクリックしてikimono.flaをダウンロードしたんですが、
開くと「予期しないファイル形式です」といわれてしまいます。
バージョンが違うのでしょうか?

アカウント編集」で、使用環境は書いておきましょう。
プロフィール・使用環境記入のお願い

ikimono.fla は、MX 2004 形式で保存されていますね。


----------------
質問する際は、回答者に具体的な情報を与えてください。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops