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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     rotationの使い方
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
loveless
Åê¹ÆNo.12751
投稿日時: 2004-11-26 21:54
新米
居住地: 神奈川
投稿: 9
使用環境:
WinXP,FLASH MX2004
rotationの使い方
 矢印型のMCを放物運動させながら(進行方向を示すために)回転させたくて以下のスクリプトを作って見ました。
onClipEvent (load) {
	V0 = -14;
	R = (70-90)*Math.PI/180;
	Vx = V0*Math.sin(R);
	Vy = V0*Math.cos(R);
}
onClipEvent (enterFrame) {
	Vy += 0.3;
	_x += Vx;
	_y += Vy;
	if (Vx/Vy>0) {
		this._rotation = Math.atan(Vx/Vy)*180/Math.PI;
	} else {
		this._rotation =- Math.atan(Vx/Vy)*180/Math.PI;
	}
}

 しかし、atan(Vx/Vy)の値が負の値から正の値に変わるところで回転方向が逆になってしまいます。
ifを使って条件分岐をしたらよいかと思ったのですが、矢印型MCが時計周りに回転しません。(atan(Vx/Vy)の値が正のなったところで矢印を下方向に回転させたいのです。)
 どなたかアイディアをもらえないでしょうか
製作環境は XP、 MX2004proです。


----------------
動作環境はOS xp/FLASH pro です。

SeeDa!!
Åê¹ÆNo.12752
投稿日時: 2004-11-26 22:30
職人
居住地: Nagoya
投稿: 221
使用環境:
WinXP
Flash CS4
au:W33SA?
Re: rotationの使い方
単純な回答になっちゃいますが…
atan2を使えば条件分岐しなくてもOKです
this._rotation = Math.atan2(_x-Vx, _y-Vy)*180/Math.PI;
野中文雄
Åê¹ÆNo.12753
投稿日時: 2004-11-26 22:33
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: rotationの使い方
初期値(VxとVy)や角度の計算で、何の角度を求めているのかわかりません。そのため、どう回転させたいのか把握できません。
引用:
lovelessさんは書きました:
 矢印型のMCを放物運動させながら(進行方向を示すために)回転させたくて以下のスクリプトを作って見ました。

角度の正負を、一定に保てばよいのでしょうか?
引用:
onClipEvent (load) {
    V0 = -14;
    R = (70-90)*Math.PI/180;
    Vx = V0*Math.sin(R);
    Vy = V0*Math.cos(R);
}
onClipEvent (enterFrame) {
    Vy += 0.3;
    _x += Vx;
    _y += Vy;
    if (Vx/Vy>0) {
        // this._rotation = Math.atan(Vx/Vy)*180/Math.PI;
        this._rotation += Math.atan(Vx/Vy)*180/Math.PI-this._rotation;
    } else {
        // this._rotation =- Math.atan(Vx/Vy)*180/Math.PI;
        this._rotation += -Math.atan(Vx/Vy)*180/Math.PI-this._rotation;
    }
    trace([Math.atan(Vx/Vy)*180/Math.PI, this._rotation]);  // 確認用
}

 しかし、atan(Vx/Vy)の値が負の値から正の値に変わるところで回転方向が逆になってしまいます。
ifを使って条件分岐をしたらよいかと思ったのですが、矢印型MCが時計周りに回転しません。(atan(Vx/Vy)の値が正のなったところで矢印を下方向に回転させたいのです。)


----------------
 

SeeDa!!
Åê¹ÆNo.12755
投稿日時: 2004-11-26 23:09
職人
居住地: Nagoya
投稿: 221
使用環境:
WinXP
Flash CS4
au:W33SA?
Re: rotationの使い方
野中さんのおっしゃるように、求める動きがわからないものの、たぶんコレでいいでしょう
onClipEvent (enterFrame) {
	Vy += 0.3;
	past_x = _x; // 前回の地点X
	past_y = _y; // 前回の地点Y
	_x += Vx;
	_y += Vy;
	this._rotation = Math.atan2(_y-past_y,_x-past_x)*180/Math.PI;
}

loveless
Åê¹ÆNo.12756
投稿日時: 2004-11-26 23:10
新米
居住地: 神奈川
投稿: 9
使用環境:
WinXP,FLASH MX2004
Re: rotationの使い方
 お二方返信ありがとうございました。頂いたヒントを使ってみたのですが、どうもうまくいかないようです
 投稿内容の説明ですか、初期値V0は速さを、Rは発射する角度あらわしています。また、VxとVyはX,Y軸方向の移動速度を表しています。
 矢印にさせたい動きは具体的に言うと、弓で矢を放ったときような動きをさせたいのですが矢印が水平になった後、矢じりの部分が反時計まわりに回転したりと動作してくれません。
 説明が不足しているようだったら言っていただくとこれから投稿する際の参考にもなるのでよろしくお願いします


----------------
動作環境はOS xp/FLASH pro です。

野中文雄
Åê¹ÆNo.12760
投稿日時: 2004-11-27 0:27
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: rotationの使い方
なぜ、グラフ用紙(直交座標xy)を、横にするのでしょう? (^^;
引用:
lovelessさんは書きました:
 投稿内容の説明ですか、初期値V0は速さを、Rは発射する角度あらわしています。また、VxとVyはX,Y軸方向の移動速度を表しています。
 矢印にさせたい動きは具体的に言うと、弓で矢を放ったときような動きをさせたいのですが矢印が水平になった後、矢じりの部分が反時計まわりに回転したりと動作してくれません。

x軸を水平に、y軸を垂直に取れば、こういう感じでしょうか。
onClipEvent (load) {
    V0 = 14;
    R = -70*Math.PI/180;
    Vx = V0*Math.cos(R);
    Vy = V0*Math.sin(R);
}
onClipEvent (enterFrame) {
    Vy += 0.3;
    _x += Vx;
    _y += Vy;
    this._rotation += Math.atan(Vy/Vx)*180/Math.PI-this._rotation;
}


----------------
 

loveless
Åê¹ÆNo.12765
投稿日時: 2004-11-27 5:38
新米
居住地: 神奈川
投稿: 9
使用環境:
WinXP,FLASH MX2004
Re: rotationの使い方
 何度も返信いただきありがとうございます。
 野中さんがおっしゃったグラフ用紙(直交座標xy)を、横にするというのはそうすることで思うように放物運動を出来たからなのですが、
  R = -70*Math.PI/180;

の方法で出来るようなのでこちらのほうを使わせていただきます。
 また、矢印の動きなのですが、私が回転という言葉を使ったために矢印を回転させつつ放物運動をする方法を皆さんヒントいただいたのですが申し訳ないのですが、私が動かしたいものと違うようです
  rotationをつかって動かしていたので回転という表現をしましたが、この動きは物を投げたときに進む方向を示すために使いたいので、進行方向への矢印の向け方といえばいいのでしょうか?矢印は投げられた角度から徐々に水平になり、下の方向に向いていく動きを表現したいと考えています。最初に書いたScriptで水平になるところまでは成功しているのですが、それ以降がうまくいくません水平になった後矢じりの部分が下の方向を向いていくようにするにはどのようにすれはよいでしょうか?
 説明が下手で申し訳ありません


----------------
動作環境はOS xp/FLASH pro です。

ひろゆき
Åê¹ÆNo.12766
投稿日時: 2004-11-27 6:46
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: rotationの使い方
野中さんのスクリプトを貼り付けただけですが、
こういう動きではないのでしょうか?

onClipEvent (load) {
	V0 = 14;
	R = -70*Math.PI/180;
	Vx = V0*Math.cos(R);
	Vy = V0*Math.sin(R);
}
onClipEvent (enterFrame) {
	Vy += 0.3;
	_x += Vx;
	_y += Vy;
	this._rotation += Math.atan(Vy/Vx)*180/Math.PI-this._rotation;
}


矢印MCの向きを追加しました。

野中文雄
Åê¹ÆNo.12770
投稿日時: 2004-11-27 8:42
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: rotationの使い方
特段その必要があれば別として、横にしないと「思うように放物運動」ができない時点で論理に誤りのあることを意味します。ボタンの掛け違いは、出発点から直さないかぎり正せません。その「方法で出来る」からではなく、それが論理的に正しい場合に、考え方として採用されるべきです。
引用:
lovelessさんは書きました:
 野中さんがおっしゃったグラフ用紙(直交座標xy)を、横にするというのはそうすることで思うように放物運動を出来たからなのですが、
  R = -70*Math.PI/180;

の方法で出来るようなのでこちらのほうを使わせていただきます。

矢じりの方向は、(フレーム)単位当たりのベクトルに一致させています。ひろゆきさんもいわれるとおり、具体的にどこが違うのでしょうか?
引用:
ひろゆきさんは書きました:
野中さんのスクリプトを貼り付けただけですが、
こういう動きではないのでしょうか?

ちなみに、矢印の向きは、x軸正の(右)方向が開始状態です。元のスクリプトが前半正しく動作しているということは、矢印がy軸負の(上)方向を向いていると推測します。
引用:
  rotationをつかって動かしていたので回転という表現をしましたが、この動きは物を投げたときに進む方向を示すために使いたいので、進行方向への矢印の向け方といえばいいのでしょうか?矢印は投げられた角度から徐々に水平になり、下の方向に向いていく動きを表現したいと考えています。最初に書いたScriptで水平になるところまでは成功しているのですが、それ以降がうまくいくません水平になった後矢じりの部分が下の方向を向いていくようにするにはどのようにすれはよいでしょうか?

念のため、先にポストしたスクリプトの訂正箇所を明記して、再度掲載します。なお、1箇所ムダな記述がありましたので、修正しました。
onClipEvent (load) {
    V0 = 14;  // -14;
    // R = (70-90)*Math.PI/180;
    R = -70*Math.PI/180;
    Vx = V0*Math.cos(R);  // sin(R);
    Vy = V0*Math.sin(R);  // cos(R);
}
onClipEvent (enterFrame) {
    Vy += 0.3;
    _x += Vx;
    _y += Vy;
    /*
    if (Vx/Vy>0) {
        this._rotation = Math.atan(Vx/Vy)*180/Math.PI;
    } else {
        this._rotation = -Math.atan(Vx/Vy)*180/Math.PI;
    }
    */
    this._rotation = Math.atan(Vy/Vx)*180/Math.PI;  // 一部修正
}


----------------
 

loveless
Åê¹ÆNo.12791
投稿日時: 2004-11-28 5:47
新米
居住地: 神奈川
投稿: 9
使用環境:
WinXP,FLASH MX2004
Re: rotationの使い方
 何度も丁寧に返信いただきありがとうございました。私の勘違いで何度も同じことを説明していただき申し訳ありませんでした。
 シンボルの矢印の向きを→にすることで問題は解決しました。シンボルとインスタンスを取り違えてしまいインスタンスばかり回転させて苦労していました。
やっと、教えていただいたような動きを作ることができました。アイディアを下さった方々ありがとうございました。
 今回のアイディアをもらうにあたってまだまだ勉強不足だと感じました。技術をあげることのできるようさまざまなFLASHをこれからも作っていきたいです。
これからもFLASH製作で行き詰ったらここに質問しにこようと思うのでよろしくお願いします。 


----------------
動作環境はOS xp/FLASH pro です。

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

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