📜  如果相机碰到房间 gml 的边缘,则停止相机 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:09:19.849000             🧑  作者: Mango

如果相机碰到房间 gml 的边缘,则停止相机 - TypeScript

在开发游戏时,相机控制是一个重要的问题,因为相机必须跟随玩家的移动,并且不能超出房间边界。因此,当相机碰到房间边界时,我们需要让相机停止移动,以免游戏出现异常情况。

下面是 TypeScript 中的示例代码,用于实现当相机碰到房间 gml 的边缘时,让相机停止移动。

// 获取相机的位置和视图大小
const cameraPosition = view_camera[0];
const cameraView = view_camera_get(cameraPosition);

// 获取房间边界
const roomWidth = room_width;
const roomHeight = room_height;

// 设置相机移动速度
const cameraSpeed = 8;

// 碰撞检测
const isCollidingWithRoomEdge =
  cameraPosition[0] - cameraView[0] <= 0 ||
  cameraPosition[0] + cameraView[0] >= roomWidth ||
  cameraPosition[1] - cameraView[1] <= 0 ||
  cameraPosition[1] + cameraView[1] >= roomHeight;

// 停止相机移动
if (isCollidingWithRoomEdge) {
  view_camera[0] = cameraPosition;
} else {
  if (keyboard_check_pressed(vk_left)) {
    view_camera[0] -= cameraSpeed;
  }
  if (keyboard_check_pressed(vk_right)) {
    view_camera[0] += cameraSpeed;
  }
  if (keyboard_check_pressed(vk_up)) {
    view_camera[0] -= cameraSpeed;
  }
  if (keyboard_check_pressed(vk_down)) {
    view_camera[0] += cameraSpeed;
  }
}

在上述代码中,我们首先获取相机的位置和视图大小,然后获取房间的边界。接下来,我们设置相机移动速度,并使用碰撞检测判断相机是否碰到了房间的边界。

如果相机碰到了房间的边界,我们就停止相机的移动,否则就让相机根据玩家的输入进行移动。

以上就是 TypeScript 中实现当相机碰到房间 gml 的边缘时,让相机停止移动的示例代码。