- ベストアンサー
AS2初心者のためのオブジェクト移動について
- 解説
- オブジェクトのバウンド幅を調整する方法
- バウンドの後にオブジェクトを横に転がす方法
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 横に弾んでいくのではなく、 > 同じ場所で縦にのみバウンドする動き つまり単純に 「x座標方向(横方向)移動関係のスクリプトを全て消せば良い。」 それだけのことでしょう? 横に動く理由(原因)は 「x座標方向に動かしているからx座標方向に動く」 それだけのことです。 ですからこの理由(原因)を取り除けば良いだけです。 最初の「move_05_00_fla05_as1.fla」内の 「player(ボールMC)」自体に書かれたスクリプトを変更する場合は 次のようになります(x座標に関係する行を消しただけ)。 //--------------------------- onClipEvent (load) { _y = 150; dy = -10; } onClipEvent (enterFrame) { dy += 0.5; // 下方向に移動量を増やす _y += dy; // 地面に着いたらyの移動量を反転 if (_y>250) { _y = 250; dy *= -0.8; } } //--------------------------- > また、バウンドがその場で止まったあと、 > 横に少し転がって止まる 私が上に書いたスクリプトでも 元のスクリプトでも,バウンドは決して止まりません。 -0.8倍 ずつ小さくなるだけです。 ですからまずは, 「『バウンドが止る』とはどういうことなのか」 を定義する必要があります。 その定義した状態(条件)になれば 『横に転がる』という動きをさせるわけですが 「どのように『横に転がる』のか」 これも書かれていないのでわかりません。 さらに「少し転がって」の 「『少し』とはどういうことなのか」 もわかりません。 『少し』とは 時間的に『少し』なのか,距離的に『少し』なのかすらもわかりません。 すべてにおいてアヤフヤですね(考える気すらもないのでしょうか?)。 もしスクリプトをコーディングするのでしたら その前にこの辺のことはしっかりと "具体的に" 考えておく必要があります。 スクリプト以前(以下)の話です。 とにかく他人まかせ(または PCまかせ)でアヤフヤなことだらけなので 私が勝手に決めた定義と動きで行きます。 //--------------------------- onClipEvent (load) { _y = 150; dy = -10; } onClipEvent (enterFrame) { dy += 0.5; // 下方向に移動量を増やす _y += dy; // 地面に着いたらyの移動量を反転 if (_y>250) { _y = 250; dy *= -0.8; //もし dy の絶対値が 1 未満になれば if (Math.abs(dy)<1) { //x座標を 80 に向けて 1/20 ずつ近づける this._x +=(80-this._x)/20; } } } //--------------------------- 気に入らない動きであれば自由に変更してください。 思うのですが, 何故このような動きにスクリプトを使う必要があるのでしょうか? もし,ActionScript やそれ以前(以下)のことすら考える気もないのでしたら 最初からスクリプトなど使わずにモーショントゥイーンで作成すれば良いだけだと思います。 モーショントゥイーンを使えばもっと良い動き(情緒や感性あふれる動き)を簡単に作ることができますよ。 「移動するバウンドボール(オレンジのサンプルFLASH講座)」 http://orange.2-d.jp/flash/anime/03.html 「FLASH活用講座 トゥイーンアニメーションを作る」 http://juen-cs.dl.juen.ac.jp/html/flash/04/03/explanation.html 「24 リアルなボールのバウンド - MdN Design Interactive」 http://www.mdn.co.jp/di/articles/655/?page=4
お礼
ご回答ありがとうございます。