当你在GameMaker Studio 2 创建房间时,你需要设定 可视区域(view port) 和 摄像机 来控制可以让玩家看到的东西。此可视窗口是在游戏中用来向玩家展示游戏内容的小窗口,无论它是1:1或被缩放的。因此当你的游戏房间要比能够显示出来的大小要大时,这个可视窗口是很重要的。此 摄像机 是用来定义可视区域将会显示什么。
GameMaker Studio 2 允许你有8个独立的可视区域(编号从0到7),但摄像机的数量没有限制,但事实上由于每个可视区域只能分配一个摄像机,所以最多只有8个摄像机是能同时 可用的 。不过一般你只需要一两个可视区域就可以了。摄像机可用被用来显示同一房间的不同部分,可被激活和禁用,也可以在任何时候被分配给可视区域。这意味着你可以使用摄像机来绘制HUD,或分镜效果,或过场动画。本质上来说,你在房间里放置了摄像机后,需要定义房间可见的“视野”(区域),这个视野将被绘制给 可视区域(view port)。注意此可视区域的大小可能和摄像机视野大小不同,因此如果你的摄像机视野和可视区域的大小比例不是1:1,你就需要扭曲或缩放摄像机的视野。
如果你是通过 房间编辑器 添加的摄像机,那么要得到此摄像机ID 值就需要使用view_camera 变量。然后,你可以使用下面的函数操作视野。如果有必要的话,甚至可以销毁默认相机,但主要你需要为视图分配一个新的相机,否则你将会遇到一些不可预测的事情。在房间编辑器中为可视区域添加的摄像机的作用域是全局的 ,一旦你创建了一个,那么这个将在接下来的房间中按照房间编辑器中设定好的值继续存在,所以如果你在 任何 房间中销毁了默认摄像机,那么 所有的房间将不会再出现默认摄像机。
关于摄像机和可视区域需要注意的是,游戏中第一个房间的所有激活的可视区域的边界框的总面积定义背景画布大小(或者MacOS、Ubuntu(Linux)和Windows的窗口大小),任何未被可视区域覆盖的区域将默认使用如下图所示的窗口颜色进行绘制:
你应该注意多个摄像机的情况,因为对于所有实例的绘制事件,每次视野都会调用一次,如果你一个房间有三个活动摄像机视野,绘制事件每步都会运行三次(基本上是三倍的运行量),如果游戏太而复杂,这会导致游戏运行速度减慢。然而此 view_current 变量可用来限制绘制的调用,它是通过检查那个视野正在被绘制,并仅给给定的可视区域绘制物品。同样需要注意你自己创建的摄像机,如果你不再使用而没有用 camera_destroy() 来销毁它,会导致存储泄露。
你可以从下面的不同部分找到所有可用功能的概述,但需要注意的是,其中的一些功能需要设置使用不同的矩阵,因此你可能需要查看手册Matrix Functions的相关部分。另请注意,除了这些函数,有些房间函数可用于设置摄像机和可视区域的值, 请看创建和更改房间。
- camera_get_view_mat
- camera_get_proj_mat
- camera_get_update_script
- camera_get_begin_script
- camera_get_end_script
- camera_get_view_x
- camera_get_view_y
- camera_get_view_width
- camera_get_view_height
- camera_get_view_speed_x
- camera_get_view_speed_y
- camera_get_view_border_x
- camera_get_view_border_y
- camera_get_view_angle
- camera_get_view_target
- camera_get_default
- camera_get_active
在使用摄像机时,你必须将其分配给一个可视区域,这样摄像机才能激活并显示内容。这些可视区域被从0到7编号,可以使用不同的变量数组和函数来更改和定位,你也可以检查现在哪个可视区域正被绘制,或者可视区域正连接到哪个摄像头。