スクリプト/コツ/自由なカメラ移動(履歴ID:27)

最終投稿者:      mini shirosaboten 更新:2010/02/23 13:28:39
今回はカメラ移動について解説したいと思います。
このスクリプトを理解するには
  • カメラ移動(moveCamera関数)
  • カメラ移動戻し(moveCamera関数)
  • プレーヤーX座標取得(getPlayerPosX関数)
  • プレーヤーY座標取得(getPlayerPosY関数)
  • while文
を理解している必要があります。詳細は
関数リファレンス
スクリプト言語のマニュアル
を参照してください。以下の文では
「ゆっくりとカメラ移動」と「ゆっくりとカメラ戻し」
について解説します。

ゆっくりとカメラ移動

moveCamera関数は特定の位置にカメラの位置を変更することが出来る関数ですが、
この関数単体では、『ゆっくり画面が移動していく』方法が取れません。
こういうときにwhile文が役に立ちます。

a = getPlayerPosY()
speak("カメラが下方向に移動します")
while a < getPlayerPosY() + 32 * 15
  moveCamera(true, getPlayerPosX(), a)
#aの値を少しずつ増加させます
  a = a + 0.5
end

これだけでカメラがゆっくりと移動します。
移動目的先の座標の取り方ですがマップが1マス1pixelで、画面は縦15マス横11マスなので、
横方向には32×11pixel、縦方向には32×15pixelで丁度ひと画面向こうの位置になります。

ただし画面端まで来たときにはカメラの移動はされないので、while文の処理が終わるまで待つことになりますのでご注意を。

ゆっくりとカメラ戻し

上記のカメラ移動の状態で通常のカメラ戻し(trueをfalseに変更)をするといきなり元の位置に戻ることになります。
ゆっくりとカメラ戻しをする際には、ゆっくりと元の位置にカメラを移動した後に通常のカメラ戻しを行ってください。
これでスムーズなカメラ戻しが出来ます。
a = getPlayerPosY() + 32 * 15
speak("カメラの位置を戻します")
while a > getPlayerPosY()
  moveCamera(true, getPlayerPosX(), a)
#aの値を少しずつ減少させます
 a = a - 0.5
end
#カメラ移動が終わったらカメラ戻しです
moveCamera(false)


以上で自由なカメラ移動の説明は終わりです。
上方向へいく場合は不等号やプラスマイナスが変わります。
左右に移動の場合はX、Yの切り替えに注意しましょう。

カメラ移動がうまく使えればちょっと凝ったイベントシーンの演出や、斬新な謎解きものなんかも作れるかもしれません^^


ちょっと説明が雑だったかもしれないのでわからないことがあったら質問してみてください。
解説になるかわからないのですが
カメラ移動を使ったゲームを作ってみました。カメラ移動って楽しいねって思っていただければ幸いです。



カメラ移動ならば紹介すべきゲームがあります。dycoonさんのゲームです。
こちらも未プレイの方は是非やってみてください!おススメです^^
死都の戦い1~迂回~