へにょりレーザーを実装。
一見レーザーと同じようですが、アルゴリズムは全く別物です。
Nullさんに教えていただいたこちらのサイト(http://1st.geocities.jp/shift486909/index.html)
のアルゴリズムを使わせていただいてます。というか丸コピ(ry
[nico]http://www.nicovideo.jp/watch/sm14645040[/nico]
しかし処理落ちしまくりですね。
調べてみると当たり判定が相当食うみたいでです。長方形恐るべし。
まああんなに長方形判定やってたらダメか・・・。
そんなわけで軽量化です。初めての試みですね。
とりあえず、レーザー中の各点との距離が10ピクセルより離れてるものを除外しました。当たり判定が大きくならない限り大丈夫でしょう。
すると当たり判定にかかる時間が1/3に。おお、すげえ。
あと描画にかかる時間を削減するために、描画領域を毎フレーム設定しなおすことに。
まず最初に外側のフレーム(ボード)を描画して、次に描画領域をフィールドのみにして描画。
これで無駄な弾を描画せずにすみます。
でもやっぱり処理落ちする(°□°;)
へにょりレーザー作ってみた
Re: へにょりレーザー作ってみた
長方形判定の代用として、
長方形の中心線Lの
(垂線の長さ+自機の半径)<(幅/2)で、
かつ垂線の足が線分の範囲内に収まっているなら接触
これなら単純で速いと思う。
あとはベジェだと発射後の軌道操作が難しいので、先端を弾と考えてそれに一定フレームの軌跡をつけるとか
長方形の中心線Lの
(垂線の長さ+自機の半径)<(幅/2)で、
かつ垂線の足が線分の範囲内に収まっているなら接触
これなら単純で速いと思う。
あとはベジェだと発射後の軌道操作が難しいので、先端を弾と考えてそれに一定フレームの軌跡をつけるとか
Re: へにょりレーザー作ってみた
>へろりんさん
ありがとうございます!
へろ・・・へにょりレーザーで弾幕作ると一段とかっこよく見えますね。
私も自分に磨きをかけてSAIりんに・・・ってちょっと無理がありますね。
>Nullさん
おお!その判定なら前に実装したので早速使ってみます!
お?
おお?
なんと約20%も判定にかかる時間が短くなりました!ありがとうございます!
さらに色々と改良を加えて、50発出しても処理落ちしないくらいになりました!
ベジェ曲線で発射して時間経過した後は、座標から速度、加速度を計算させて動かしています。
ありがとうございます!
へろ・・・へにょりレーザーで弾幕作ると一段とかっこよく見えますね。
私も自分に磨きをかけてSAIりんに・・・ってちょっと無理がありますね。
>Nullさん
おお!その判定なら前に実装したので早速使ってみます!
お?
おお?
なんと約20%も判定にかかる時間が短くなりました!ありがとうございます!
さらに色々と改良を加えて、50発出しても処理落ちしないくらいになりました!
ベジェ曲線で発射して時間経過した後は、座標から速度、加速度を計算させて動かしています。
Re: へにょりレーザー作ってみた
Nullさんのおっしゃるように先頭だけB-スプライン等を使って動かして、残りは履歴を使うと良いと思います。
履歴を軌跡点として使うと、進行方向が既に分かっているので、垂線はsinとcosを入れ替えるだけで求めることができます。
フレーム単位に換算したら計算コストをほとんど無くすことができると思いますよ。
あとは固定小数点数を使うとか。
手前味噌ですが。→ゲーム向け固定小数点数ライブラリ
履歴を軌跡点として使うと、進行方向が既に分かっているので、垂線はsinとcosを入れ替えるだけで求めることができます。
フレーム単位に換算したら計算コストをほとんど無くすことができると思いますよ。
あとは固定小数点数を使うとか。
手前味噌ですが。→ゲーム向け固定小数点数ライブラリ
Re: へにょりレーザー作ってみた
はい、そうしてるんです・・・。
Nullさんに教えていただいたサイトにあるように、list構造を使っているので計算方法はおっしゃる通りになってると思います。
コストがかかっているのは当たり判定ですね。
現在は
各点と近くにあるかどうか判定→近いなら、ひとつ次の点との線分との距離で判定
というやり方をとっています。
Nullさんに教えていただいたサイトにあるように、list構造を使っているので計算方法はおっしゃる通りになってると思います。
コストがかかっているのは当たり判定ですね。
現在は
各点と近くにあるかどうか判定→近いなら、ひとつ次の点との線分との距離で判定
というやり方をとっています。
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 15年前
Re: へにょりレーザー作ってみた
へろりレーザー綺麗だな~。
ぐにゃぐにゃしてるレーザーって「不快な避けにくさ」になりやすいから避けてきたけど、
演出の為の使い方なら全然ありですね。
これは期待!たまに来る全ホーミングとか不快にならないへろりレーザーならよさそう。
ぐにゃぐにゃしてるレーザーって「不快な避けにくさ」になりやすいから避けてきたけど、
演出の為の使い方なら全然ありですね。
これは期待!たまに来る全ホーミングとか不快にならないへろりレーザーならよさそう。
Re: へにょりレーザー作ってみた
ありがとうございます!
まあぐにゃぐにゃした軌道のはちと厳しいですよね。妖々夢4面のメルランの通常1のへにょ・・・・へろりレーザーみたいな。
私としては弾幕を華やかにするための飾りや弾源として主に使う予定です。
まあ重くて50発しか出せないので撃つに撃てないんですがw
まあぐにゃぐにゃした軌道のはちと厳しいですよね。妖々夢4面のメルランの通常1のへにょ・・・・へろりレーザーみたいな。
私としては弾幕を華やかにするための飾りや弾源として主に使う予定です。
まあ重くて50発しか出せないので撃つに撃てないんですがw