【发布时间】:2018-10-29 02:58:12
【问题描述】:
我是 GameMaker 的新手,我正在玩游戏,尝试按照 Shaun Spalding 的教程创建我的第一个平台游戏,尤其是关于玩家相机跟踪的 this one。我在 Mac 上使用 GameMaker Studio 2。
我正在尝试使用类似的方法在 dramatic-ish 脚本事件期间实现平滑缩放,基本上是缓慢地向上或向下倾斜 camera_set_view_size() 参数以实现平滑缩放。
我目前在 oCamera 对象上有当前代码,它适用于缩放部分。
创建活动
/// @description Setup camera
zoom_level = 1;
cam = view_camera[0];
follow = oPlayer;
view_w_half = camera_get_view_width(cam) * 0.5;
view_h_half = camera_get_view_height(cam) * 0.5;
xTo = xstart;
yTo = ystart;
default_zoom_width = camera_get_view_width(cam);
default_zoom_height = camera_get_view_height(cam);
currW = default_zoom_width;
currH = default_zoom_height;
步数事件
/// @description Update camera
// Update zoom size
if keyboard_check_pressed(ord("I")) {
zoom_level = 0.5;
} else if keyboard_check_pressed(ord("O")) {
zoom_level = 1;
} else if keyboard_check_pressed(ord("P")) {
zoom_level = 2;
}
// Update destination
if (instance_exists(follow)) {
xTo = follow.x;
yTo = follow.y;
}
// Update object position
x += (xTo - x) / 25;
y += (yTo - y) / 25;
// Update view size
zoomXTo = default_zoom_width * zoom_level;
zoomyTo = default_zoom_height * zoom_level;
currW += (zoomXTo - camera_get_view_width(cam)) / 25;
currH += (zoomyTo - camera_get_view_height(cam)) / 25;
camera_set_view_size(cam, currW, currH);
// Clamp camera
x = clamp(x, view_w_half, room_width - view_w_half);
y = clamp(y, view_h_half, room_height - view_h_half);
// Update camera position
camera_set_view_pos(cam, x - view_w_half, y - view_h_half);
缩放位可能可以更简洁地完成,但确实可以。我仍然想知道如何:
- 保持玩家居中。我认为这与
xTo = follow.x和yTo = follow.y部件和缩放变量有关,但无法准确计算比例变化如何转化为 x/y 位置变化...... - 更新夹紧摄像头部件,使其反映变焦的变化。
已经对这些进行了一些修改,但似乎无法弄清楚如何做到这一点,因此我们将不胜感激。
非常感谢!
【问题讨论】:
标签: game-maker game-maker-studio-2