しかし、微妙に不自然なエセレーザーです。
昔立ち読みした本に、レーザーは棒状のグラフィックではなく、
通常のショットを長く繋げて長く見せているだけだと読んだ記憶があります。
でも、ここしか覚えてません(笑)
とりあえずシンプルなレーザーの1パーツを作って、
連続ショットで重なるようにしてみました。
パーツはこんな感じです
でもこれだと自機が動いた時にレーザーのパーツがバラけます。
という訳で、自機が動いた時に、既に発射された弾も動かないと
真っ直ぐになりません。
そこでbeemとかいう適当なインスタンス名を付けた
空のMCを作って配置。
自機と同じ座標になるように以下のようなスクリプト記述
※自機のインスタンス名はmyshipにしてます
onClipEvent (enterFrame) {
_x = _root.myship._x;
_y = _root.myship._y;
}
このbeem上にレーザーを描画します。
発射位置はbeem内の(0.-30)にして
ちょっと前にでるようにしてます。
これで描画エリアであるbeemも自機と一緒に動くので
自機が動いても、レーザーは真っ直ぐになります。
こんな感じになります
(カーソルキー操作。Zキー発射。)
ただ、若干自機に遅れて動くので、
ピッタリ合わせたい場合は自機の移動スクリプトを
beemにも適用させてやればよいと思います。
キーボード操作であれ、マウス操作であれ、
自機の移動に使っているスクリプトをそのままコピペ。
(最初にピッタリと合わせておく必要がありますが)
当たり判定は貫通するタイプであれば、個々に取る必要は無く、
レーザーを描画するMCであるbeemと敵との判定を取れば良いと思います。
ただこのレーザーは、ちょっと不自然な部分があります。
連続してビームが発射されている状態であれば、
自機の動きに合わせてレーザーが動いても問題無いのですが、
自機のレーザーを一旦区切った結果、
自機から離れた状態になったレーザーも
自機の動きに合わせて動くのは何とも不自然です。
という訳で参考までに。