|
泥み花火の画像を用意し
サイズを設定しやすいように加工し 回転しながら火花を出して移動させてみる この状態で花火の回転は0度 火花は左に出ることにして0度 出る位置は三角関数で中心から 火花の出る位置までの距離を計算 それを半径とし初期角度もそれで計算 毎回計算しなくて良い様に固定 と仮定し設定してみる まず600×600の表示サイズで スプライトを追加 祖に編集でねずみ花火画像を中心位置 100,100(私の編集画像では)描画0,0で固定 左下のスプライトをWクリックして右に固定 そのスプライトのスクリプト onClipEvent(load){ _x = 0; _y = 0; } 左上に表示 基本位置 何もしなくても同じ 火花の座標を計算 rad = Math.atan2(相手のy座標 - 自分のy座標, 相手のx座標 - 自分のx座標); 角度 = rad * 180 / Math.PI; これをひとつの式に deg = (Math.atan2(235 - 100,30 - 100) * 180 / Math.PI; 距離は r =Math.sqrt((235 - 100)*(235 - 100)+(30 - 100)*(30 - 100)); 中心を見やすいように表示中心300,300にして 濃い点させます 火花の出る位置がこの場合時計の位置にあり そこから反時計回りに欠いてさせます ねずみ花火が単純に回っているのと同じことですが 火花の出る位置と角度を習得するのに必要です(多分) onClipEvent(load){ cx = 300; cy = 300; _x = cx ; _y = cy ; deg = 0; deg1 = Math.atan2((235 - 100),(30 - 100)) * 180 / Math.PI; r =Math.sqrt((235 - 100)*(235 - 100)+(30 - 100)*(30 - 100)); x = Math.cos(deg1)*r + cx; y = Math.sin(deg1)*r + cy; } 中心部に花火の中心を表示 まずこれを反時計回りに回転させます ラジアン = 角度 * Math.PI / 180; まず角度を1度ずつ減らします deg -- ; _rotation = deg; これで半時計回りの完成 onClipEvent(load){ cx = 300; cy = 300; _x = cx ; _y = cy ; deg = 0; deg1 = Math.atan2((30 - 100),(235 - 100)) * 180 / Math.PI; ideg = deg1; r =Math.sqrt((235 - 100)*(235 - 100)+(30 - 100)*(30 - 100)); x = Math.cos(deg1* Math.PI / 180)*r + cx; y = Math.sin(deg1* Math.PI / 180)*r + cy; } - onClipEvent(enterFrame){ deg -- ; _rotation = deg; } deg1とrはなんだ? 火花の出る位置を計算させています _rotationの下にねずみ花火本体の動きに連動させる計算式を追加します deg1 = deg + ideg ; x = Math.cos(deg1* Math.PI / 180)*r + cx; y = Math.sin(deg1* Math.PI / 180)*r + cy; x,yが火花に位置になるはずです(考えが正しければ) あっているか確認するため火花用のスプライトをインスタンス名fireとして ねずみ花火のスプライトより上の深度で固定しその編集で 背景と間違えない色を用いたテキストの●か適当な画像で(ワザとに大きくしました)設定します ねずみ花火のスプライトの今説明したx,yを参照するのでインスタンス名をmouseとします これで下準備の完成 mouseの スクリプトを onClipEvent(load){ _x = _root.mouse.x ; _y = _root.mouse.y ; - onClipEvent(enterFrame){ _x = _root.mouse.x ; _y = _root.mouse.y ; } これで中央で回転するねずみ花火に連動して回転するスプライトの白い円の画像(私の設定) これでねずみ花火が出来上がりです 後はねずみ花火を移動させ花火の画像を火花らしく設定すればねずみ花火もどきが出来あがります(たぶん) ふたつのスプライトの下に複製のスクリプト count =1; i = 1; onEnterFrame = function(){ count ++; if(count%5 == 0){ //3フレームに1回 namae = "block" + i; //インスタンス名(block0,block2,block3〜と名づけられる) sindo = 1000+i; //深度(ASの深度1000,1001,1002〜に配置される) _root.fire.duplicateMovieClip(namae,sindo); //上記の規則で複製する if(i > 14){i =1;} //40個まで複製したら、変数iの値を1に戻す else{i ++;} } }; このままでは火花が回転するので座標を固定するため fireスプライトのスクリプトはload部のみ 回転の軌跡で火花部分が残るはずです 目標は |

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


