[雑談] RPG汎用関数、カメラ移動関数の改良例
投稿者: aoihikawa 投稿日:2013/02/10 21:15
スクリプト/RPG汎用関数/カメラ移動関数
< 改良例 >
・更新回数の増加
・引数でカメラの現在値、カメラの移動先を個別に指定可能に
・引数の座標をマス目基準、プレイヤー現在位置基準を指定可能に
・スムーズスクロールの実装
ツイート
< 改良例 >
・更新回数の増加
・引数でカメラの現在値、カメラの移動先を個別に指定可能に
・引数の座標をマス目基準、プレイヤー現在位置基準を指定可能に
・スムーズスクロールの実装
def max(a, b) if a < b return b else return a end end def min(a, b) if a > b return b else return a end end def bind_camera_x(x, map_width) return min(max(x, 256), map_width - 256) end def bind_camera_y(y, map_height) return min(max(y, 192), map_height - 192) end # x, y : カメラの現在値(マス目 or "px" / "py") # x2, y2 : カメラの移動先(マス目 or "px" / "py") # sec : 移動にかける秒数 # map_width, map_height: マップの幅と高さ(デフォルトは32,32) def smart_move_camera(x, y, x2, y2, sec, map_width, map_height) count = sec * 50 if x == "px" x = getPlayerPosX() else x = x * 32 + 16 end if y == "py" y = getPlayerPosY() else y = y * 32 + 16 end if x2 == "px" x2 = getPlayerPosX() else x2 = x2 * 32 + 16 end if y2 == "py" y2 = getPlayerPosY() else y2 = y2 * 32 + 16 end cx = bind_camera_x(x, map_width * 32) cy = bind_camera_y(y, map_height * 32) dx = (bind_camera_x(x2, map_width * 32) - cx) / count dy = (bind_camera_y(y2, map_height * 32) - cy) / count i = 0 r = 360 / count while i < count cx = cx + dx + dx * sin((r * i - 90) * pi() / 180) cy = cy + dy + dy * sin((r * i - 90) * pi() / 180) moveCamera(true, cx, cy) waitTime(20) i = i + 1 end end
コメントする
コメントするには、ログインする必要があります。
コメント一覧
コメントはありません。