|
今の風邪薬には無くなったみたいだけど
以前錠剤の入った瓶の紙パッケージ位の 大きさで地面において火をつけると 噴水のように火花があがる噴出し花火に挑戦 onClipEvent(load){ ① } ①の部分に初期設定をする まず火花の出る位置 画像編集で座標を確認 sx = 313; sy = 452; 火花の出る位置 これが初期位置となるので _x = sx; _y = sy; 真上に火花が上がるので deg = 270; 半径(後で1時から11時の上方の範囲設定するため)は暫定値 r = 10; 真上だけなら横移動は無いので横移動の変数はいりませんが 後で設定するため dx = Math.cos(deg * Math.PI / 180); dy = Math.sin(deg * Math.PI / 180); ポッキーの花火では左下方に火花が消えたので手抜きで 画面から消えたら初期位置に戻しました (ここではsx,syに) 今回終点を決めそこで火花が消滅し初期位置に戻そうと思います こだわって火花に地球の引力が働きスピードが徐々に遅くなる設定も加えようと思います syは452 上に50残したいので半径rを変えます r = 400; まずこれで①が出来た?と思います 左下に必要なのは 背景画面 スプライト そのスプライトに入れる火花の画像 右には 背景に花火本体の画像を固定画面 深度は-10 スプライト インスタンス名をfire 深度0で固定 その編集で画像を入れます スプライトのスクリプトに 上記のスクリプトをいれ火花の位置を確認 初期位置に表示確認できたので 終点を設定します 半径にdx,dyをかけたものなので ①の一番下に加えます tx = r * dx + sx; ty = r * dy + sy; 以上で①の完成 初期位置から終点まで減速しながら移動するスクリプト②の設定 http://www.flashiroha.com/script/as3.html 上記を参照してください - onClipEvent(enterFrame){ ② } 変数名をmx,myとして mx = (tx - _x)/4 ; my = (ty - _y)/4 ; _x += mx; _y += my; これで花火が終点まで行ってほぼ止まったので 実際の位置と終点の距離を計算します ds = (tx -_x) * (tx -_x) + (ty -_y) * (ty -_y); 本当はこれの平方根ですが計算量を減らすため これが2以下なら元の位置に帰るようにします if ( ds <= 2){_x = sx;_y = sy;} これで上に減速しつつ移動し元に戻るを繰り返します これに複製のスクリプトを下に追加 for(i=0;i<100;i++){ namae = "block" + i; sindo = 1000+i; _root.fire.duplicateMovieClip(namae,sindo); } 同じ軌道なので変わりません ①の角度に幅を持たせます 12時の270度を中心に 11時が240度(最低値)1時が300度(最大値)幅60なので deg = Math.random()*60 +240; スクリプトを理解したいなら設定追加のたびに プレビューで確認してください 発生位置にも幅を持たせます deg設定のように sx = Math.random()*20 +293; 速度を変化させます mx = (tx - _x)/4 ; my = (ty - _y)/4 ; の4を3から7に幅を持たせ移動の速さを変えます ①に mz = Math.floor(Math.random()*8) +3; を加え mx,xyの分母4をmzにします 半径rにも幅を持たせます r = Math.random()*200 + 250; これで複製の火花の違いが出たので 条件選択式 if ( ds <= 2){_x = sx;_y = sy;}を if ( ds <= 2){①} ①の部分を丸々入れます これで完成 複製数を変え 寒いので家の中でしようと思いましたが 部屋が狭く勝手に人の家を使いました 大事なオーディオセットが燃えたらどうするんだと 怒られそうです 燃えたら大変なのですぐに火消したので 静止画だけにしました |

- >
- コンピュータとインターネット
- >
- インターネット
- >
- ホームページ






