// 移动速度
var _xOffset = 0;
// 最小偏移半径
var _xMin = halfH;
// 最大偏移半径
var _xMax = room_width - halfH;
// 最小偏移半径
var _yOffset = 0;
// 最大偏移半径
var _yMin = halfW;
// 最大偏移半径
var _yMax = room_height - halfW;
// 当前调整值
var _ca = global.curAdjust;
// 如果存在调整值,则更新 _xOffset 和 _yOffset
if (_ca != noone) {
_xOffset = _ca.x_offset;
_yOffset = _ca.y_offset;
// 如果有左边界,则更新 _xMin
if (_ca.left_clamp) {
_xMin = _ca.x + halfW;
}
// 如果有右边界,则更新 _xMax
if (_ca.right_clamp) {
_xMax = _ca.x + _ca.sprite_width - halfW;
}
// 如果有上边界,则更新 _yMin
if (_ca.up_clamp) {
_yMin = _ca.y + halfH;
}
// 如果有下边界,则更新 _yMax
if (_ca.down_clamp) {
_yMax = _ca.y + _ca.sprite_height - halfH;
}
}
// 关闭摄像头
if (global.CamLock == true) {
// 缩放摄像头
x += (follow.x - x) / panSpd;
y += (follow.y - x) / panSpd;
}
// 逐帧计数
transition_frame_count += 1;
// 计算当前播放者位置
xx = oPlayer.x + _xOffset;
yy = oPlayer.y + _yOffset;
// 修剪播放者位置到边界内
xx = clamp(xx, _xMin, _xMax);
yy = clamp(yy, _yMin, _yMax);
// 计算摄像头要移动的距离
var _dx = (xx - x);
var _dy = (yy - y);
// 关闭摄像头
if (global.CamLock == false) {
// 移动摄像头
x += _dx;
y += _dy;
}
// 修剪摄像头位置到边界内
x = clamp(x, 0 + halfW, room_width - halfW);
y = clamp(y, 0 + halfH, room_height - halfH);
// 设置摄像头视点的位置
camera_set_view_pos(cam, x - halfW, y - halfH);
评论 (0)