2010年03月30日

ねんがん(って程では無いが)のファンネルをてにいれたぞ!

魚群ホーミングを見てたらファンネルを作りたくなった。

という訳で、むりげーの時に作って入れました。


シューティングで使うと画面上でピコピコ動き回って邪魔かもしれない・・・。



まだまだ改良の余地はありますが、とりあえず出来たのはコチラです


.
posted by ケン at 20:34 | Comment(0) | TrackBack(0) | Flashシューティング2(AS3) | このブログの読者になる | 更新情報をチェックする

2010年03月28日

魚群ホーミングの仕組み

前回作った中途半端なホーミングの仕組み。

まず、出現する敵とホーミングは配列に格納して管理しています。

弾はタイマーイベントを使い、一定間隔で発射。

マウスを押すと発射用のイベントリスナー登録
マウスを離すと発射用のイベントリスナー削除





今回はターゲット設定をシンプルに0番目の敵にしています。

enemyMcListという敵の参照を格納した配列の0番目
enemyMcList[0]がターゲットです。

敵は出現した順番に配列の後ろに追加されていき、
破壊されるとその要素番号は削除されて詰められます。
なので、今回は画面上で一番古い敵が毎回ターゲットになります。


弾の移動処理の中身は以下のような感じですが
ラジアン値から度数法に変換してさらにそれを使ってと
物凄く回りくどい事してると思ふ・・・


//ターゲットが存在するか確認します
//敵の配列は2階層上で管理してます。
var parentObject2:Object=Object(parent.parent);
if(parentObject2.enemyMcList[0] != null){


//敵0番との角度調査
敵との角度をラジアン値で求めて変数radに入れています
var dx = parentObject2.enemyMcList[0].x - this.x;
var dy = parentObject2.enemyMcList[0].y - this.y;
rad = Math.atan2(dy ,dx);

//上記のラジアン値を元に度数法の角度を出し、
//弾MCの向きを決めています。+90ってのは調整です。
this.rotation = rad*180/Math.PI+90;

//斜めに30移動する際のX座標移動量、Y座標移動量を求めます
//-90ってのは調整です。
this.x += Math.cos((this.rotation-90) * Math.PI / 180)*30;
this.y += Math.sin((this.rotation-90) * Math.PI / 180)*30;

}else {

//敵が居ない場合は画面上部に向かって飛ぶようにします
this.rotation = 0;
this.y -= 30;
}


//画面外から出たら消す処理をします
//shot_remove()は自分を消す処理をまとめた関数です。
if (this.y < -10 || this.y >610 || this.x<-10 || this.x>610) {
shot_remove()
}




上記の内容をベースに
1フレームでの角度変更に最大値制限を設けたり
ターゲットを自分に一番近い敵にすれば
普通のホーミングっぽくなりそうです。


それらしくなったバージョン
.




posted by ケン at 15:58 | Comment(0) | TrackBack(0) | 実験 | このブログの読者になる | 更新情報をチェックする

2010年03月15日

ねんがんのホーミングをてにいれたぞ!

初めてホーミングを作ってみた。

面倒くさがりなのでかなり適当です(笑)

まず、弧を描いて飛ばずにダイレクトに方向転換します。
すると魚群みたいな動きに・・・・。

あと、ターゲットが画面内の一番古い敵なのでちょっと微妙です。
やはり、前方の一番近い敵とかが無難なターゲット選定なのかな?

動き的にはこれでもアリかもしれませんが、
ぼちぼち修正していきます。

魚群ちっくホーミング
※クリックで発射



今週末はむりげーの予定です。
皆様頑張りましょう。
posted by ケン at 20:46 | Comment(0) | TrackBack(0) | 実験 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。