BlenderのSoC2008ページ見たら、COLLADAのメンテナがいねーから誰かなんとかしてくれよ、というアイディアが出てる。
うん、誰かなんとかしてやってくれ。俺は学生じゃないので無理だ。
元の奴はCOLLADAのインポートもできてそれのおかげでひどいコードになってた部分が多々あるけれど、COLLADAのインポートって需要あるんかな。
基本的には再編集するようなフォーマットでは無い気がするんだが。
いやつまり何がいいたいかというとインポートなんかどうでもいいからエクスポートだけはしっかりしてくださいお願いします。
しかし、エクスポータが新しくなったところで、俺の使い易い形になってるとは限らないしなぁ。特にアニメーション回り。
それができない以上は結局自分で使い易いCOLLADAを吐くエクスポータを書くしか無いんじゃないかと思えるぜ。
そこでCOLLADA Refineryですよとかなるのかも知れんがJavaめんどいよ。 そもそも無くなった情報は復元できない罠。
ゲーム作りの方は衝突判定の整理。
判定というよりは応答処理か。判定自体は全部AABBという手抜きだし。
整理を始めたのはいいがやはり難しい。
何が難しいって思いどおりに動いてくれないんだよな。もちろん設計が悪いだけなんだが、どう動いてほしいか整理するのが難しいよね。
ちょっと気を抜くとめり込んでみたり、床の上を歩くことすらできなくなる。
まあ解決方法としては泥くさくいろんな条件を追加していくだけなんですけどね。
いままでどうやってたんだっけ…。あ、移動方向を縦横別で持って、そっちの方向に何か無いかいちいち判定してたのか。2Dゲー的ですが、かなり面倒だったわ。
そこから整理して、とりあえず壁にめり込まないようにするには、ぶちあたった面の法線方向に押し出せば大体大丈夫、というところまで整理できた。どの面にあたってるのかの判定がいまいち怪しいが。
これで坂とか作っても大丈夫だ!問題はステージエディタで入れられるヒットがAABBにしか対応してないことだね!
うーん、全部ブロック単位で処理してたけど、ヒットが重いこともあるし、ステージの外壁とか動かないブロックはエディタでポリゴン引けるようにしようか。まあそれはまたそのうち考えればいいか。
それよりも、まだ動くブロック同士が重なるとプルプルする方が問題だね。それはなんとか怪しい数値いれて抑えてあげればいいだけのはずなんだが。
あとはキャラとブロックの区別をつけていないので、キャラでブロックを押し上げたりしたりなんだり。これは区別付けりゃいいだけなんだが、ブロックがキャラを押し出すことはあっても、キャラはブロックを押さないようにすればいいのか。ブロック押したりはできない予定だし。
あと残った問題は超重いってのがありますが、Rubyで書いてるからという以前に計算量を増やしちゃったからだね。動かないものも含めて相互ヒット計算しちゃってるからな。