|
|
||
Back to ABA Games
せっかく最近ECMAScript触っているので、前にヨタで言っていた、Google Maps APIでスクランブルフォーメーション(id:ABA:20050711#p1)をやってみようと思って、挫折。やっぱきつい。まあもともとこんな使い方をするためのものじゃないから、当たり前といえば当たり前。
一応途中まであがいた跡がこれ。ビットマップはゲーム製作技術板/シューティングゲーム製作技術総合スレの素材を利用させてもらっている。
重すぎる。フレームレートもばたつきすぎ。やっぱりスプライトをマップ上のマーカーで代用するのに無理がありすぎた。
単に挫折だけだともったいないので、作っている最中に分かったことを適当に書いておこう。Google Maps APIでアクションゲームを作るときの参考にどうぞ。
GMapのcenterAtLatLngもしくはrecenterOrPanToLatLngを定期的に呼び出すことで実現できる。
ただこの両者、微妙に挙動が違って、centerAtLatLngはマーカーのリフレッシュを積極的に行うためか、若干重い。逆にrecenterOrPanToLatLngはマーカーをリフレッシュしないため、後で説明するマーカーのredrawを明示的に行う必要がある。あとrecenterOrPanToLatLngはそれ自体にスムーススクロール機能が付いているので、連続で呼び出すとスクロールが若干ぬるぬるする。
あとInfoWindowはスクロール制御を強引に持っていってしまうので使い勝手が悪い。
GMarkerを駆使することでなんとか実現可能。マーカーを移動させるには、
marker.point.x += 0.00005; marker.redraw(true);
という風に、redrawを呼ぶ必要がある。ただし上にも書いたように、継続的なスクロールをcenterAtLatLngで行っている場合はredraw不要。
markerのiconを変更するだけでは、redrawしても反映されない。以下のようなコードが必要。
marker.remove(); marker.icon = newIcon; marker.initialize(map) marker.redraw(true);
mapはGMapインスタンス。非公開API使いまくりの上重いので、あまり多用すべきではない。
だいたいこんなところ。マーカーを駆使して無茶するよりも、スプライトは自力で別管理した方が多分正解だね。面白みに欠けるが。
結論。Google Maps APIでアクションゲームはあんまりお勧めしません!
Back to ABA Games
# azouno 『かっこいい!
実際にちゃんと動くものを作るのは難しそうだけど.』
# any 『こういう馬鹿を本気でやるのは素晴らしい。しかもGoogleMapでゲーム作るなら鬼ごっことかSLGが普通だろうに意地でもSTG作ろうという根性がまた素晴らしい。』
# dotimpact 『すばらしいです!
バンゲリングベイみたいのもよさそうだと思ったんですがどうでしょうか。』
# FoZon 『お、すばらしいです、ぜひ、いろんな国に攻め込んでください』
# うは 『皇居からスパリオが』
# o_mega 『しまった!コイツは病院だったーっ!
ああー、俺はなんてことをしてしまったんだー(棒読み』
# isshiki 『なんかそこらの同人シューティングよりゲームになってるのが・・・。あと、へちょい環境なのに言ってるほど重くないな。
というか自機はどこの侵略軍でつか?』
# ABA 『うちの環境だと重い。Firefoxの方が気持ち速くてフレームレートのばたつきが激しく、IEだと遅いけどフレームレートは安定ぎみ。』
# ABA 『バンゲリングベイは親和性高そう。シューティングよりはフライトシムみたいな感じの方が多分相性いいんでしょうけどね。』
# Horii 『うは、本当にやっちょる。
固定方向スクロールだと自宅目指して飛べないっす。』
# ABA 『あのときのヨタが長年の時を経て実現……させようとして挫折ですよ。やっぱり全方位にしないと神奈川、山の手、千葉方面への訴求が弱めですかね。』
# 47j 『この勢いで以前おっしゃってた
iPodSTGも頑張ってください。
ジャイラスとか。』