質問ページ / 114


質問ページ / 114

質問ページ/114

概要アクションスクリプトについて
投稿者Parafla Quality
状態解決
カテゴリーActionScript
投稿日2006-10-11 (水) 04:44:24
バージョン1.30

質問内容

以下のスクリプト

onClipEvent(load) {
	del_x = 4;		//xの変化量
	del_y = 2;		//yの変化量

	count = 0;

	_x = int(Math.random()*275) + 50;
	_y = int(Math.random()*150) + 50;
}
-
onClipEvent (enterFrame) {

	count ++;

	if (count >= 401) {
	  count = 1;
	}

	if (count <= 200) {		//countが200以下でスケールを大きく
	  _xscale += 0.5;
	  _yscale += 0.5;
	} else {
	  _xscale -= 0.5;		//countが200以上400以下でスケールを小さく
	  _yscale -= 0.5;
	}

	r = ((_xscale / 100) * 100) / 2;	//円の半径を計算
	r_largex = 750 - r;			//x方向の跳ね返る位置
	r_largey = 250 - r;			//y方向の跳ね返る位置

	if (_x <= r || _x >= r_largex){		//x方向の跳ね返る範囲指定
	  del_x = -del_x;
	}

	if (_y <= r || _y >= r_largey){		//y方向の跳ね返る範囲指定
	  del_y = -del_y;
	}

	_x += del_x;
	_y += del_y;
}

を用いて円があっちこっち動き回るものを作ろうと思っていますが上手くいきません。

・概要: 全体の範囲は、幅750、高さ250。基準点は(0,0)。円の大きさは、直径100から200を行ったり来たり。円の表面が全体の範囲外に出る時に跳ね返るようにしています。

・問題点: これで動かすと、跳ね返らず外側にくっついたままになる場合があります。上手く跳ね返る場合もあります。

これの原因と解決方法がわかりません。わかる方、よろしくお願いします。

回答

  • 原因は、(_x <= r)が成り立っている間にdel_xの反転が1回より多く行われること。del_xの状態を確認してから反転させればいい。if ((_x <= r && del_x < 0)||(_x >= r_largex && del_x > 0)){del_x = -del_x;}-- 2006-10-13 (金) 07:07:25
  • あ〜、なるほど。解決しました。上手く動いています。考えてくださった皆様、ありがとうございました。 -- 質問者? 2006-10-13 (金) 19:51:54