ニートが頑張るブログ

ニートが現実逃避するために創作活動など色々とカオスに頑張ってみる
ニートが頑張るブログ TOP  >  自作ゲーム開発 >  お注射カマキリ

お注射カマキリ

なんか3月もおしまいですね。

どう考えても3/11以前の時間より、3/11以降の時間の方が短かったです。
時間の加速というより謎の疲労を感じています。
いわゆるエア被災ですね。 死ねばいいですね。


今回はカマキリゲー色々なものが突き刺さるシステムを完成させました。


全画面とか。
カーソルキー          移動
Zキー             なんからを撃つ
Xキー              ジャンプ
Cキー          エフェクト出力吐血
Vキー           エフェクト変更


まぁこんな感じで、
注射器やビームがプスプス突き刺さります。
思う存分プスプス突き刺してください。



これだけのことだけど、割と自分にとっては大変だったりする。
何をしているのか。

これは別に、注射などのオブジェクトを、
カマキリの座標や方向に合わせて
付随
させているのではありません。


突き刺さった注射やビームを、
カマキリ自身の内部の部品として、発生させているのです。



まぁ何がどう違うのか上手く説明できませんが、
実際、ただ付随させるだけのやり方だとどうなるか
見てもらえばわかりやすいと思います↓

つまりこんな感じになります。

付随させるやり方だと何がダメかというと、
◆1フレーム遅延が起こる
 1フレームだけ、位置と角度が遅れて付いてきます。
 さらに、歩行モーションなどで変化するカマキリの重心に合わせて
 注射器を動したりとかその辺もうまくいきません。
(突き刺した状態でジャンプさせると、その差がハッキリ分かります)

◆カマキリの体内での上下関係の表現がショボイ
 注射器を突き刺した状態でクルクル回ってみると違和感がハッキリ。

◆あと処理が糞重い

このうち、遅延と処理の重さは自分の問題として、
どうしようもないのがカマキリ内部での上下関係だと思う。

お注射カマキリ

まぁ、↑こうやりたいところが、
↓こうなってしまうのです

お注射カマキリ

もちろん付随させるやり方のほうが、プログラム的には楽です。
でもこれでは、突き刺さってる感がありませんね。
誠に宜しくないですね。

だからそれなりに頑張りましたとさ、という話。


要はこの話は、
「別々のスプライト内での上下表示の食い違いを発生させることは難しい」
ということだと思う。

ちなみにこういう話は、
ポリゴンのゲームとは関係なさそうで、関係ある気がする。


PS時代のゲームではよく見られたかもしれない。

例えばこの動画の55秒あたりの表示の前後関係の矛盾
これも説明できる。
天誅

おそらくこれは、殿は殿としての一つのスプライトであり、
ソレ全体として背景のポリゴンとの前後関係を計算しているんだと思う。

だから、
①.手前のポリゴンの中心のZ  (ここでいう Z はカメラへの距離)
②.殿全体のスプライトの中心のZ
③.関谷の足元の地面のポリゴンの中心のZ

という順の優先度になっていると考えれば、
この表示は矛盾でもなんでもないことが分かると思います。

要は、表示するときの殿は一枚岩なので
ここでは本来「頭の部分のポリゴンだけ③の面より上位に表示すべき」でも、
そういうことは出来ないわけですね。


ソレと同じことです。
このカマキリも、一枚岩なので
注射器に対して「頭の部分だけ優先度を上げて表示する」とかは、
出来ないのです。

そ れ で も 、カマキリに注射器を突き刺したいのであれば、
そのためには、注射器をカマキリの内部にインポートしなければならない、と。

そういう話でしたとさ。


あと、こういうことを延々と考えていると、
やはり、塊魂のことを考えてしまう。
「あれは一体どうやってるんだろう」と。

塊魂はどちらかというと、オブジェクトを付随させてるんだと思う。
(勝手な想像だけど)
何かを巻き込むたびに、オブジェクトを挿入したり破棄したりしてないと思う。

理由としては、ぶつけたときにこぼれたりするから。

でも、内側の小さいモノとかは順に消えていっていると思う。
これも勝手な想像だけど。


というか、これ使って塊魂のパクリゲーとか作れそうな気がしてきたけど、
まぁやるワケないですね。
シューティングゲーム一つ完成させられないのに。

お注射カマキリ

関連記事
[ 2011/03/31 18:24 ] 自作ゲーム開発 | TB(0) | CM(0)
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL

月別カレンダー
08 ≪│2017/09│≫ 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30