[雑談] 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
コメントする
コメントするには、ログインする必要があります。
コメント一覧
コメントはありません。