3D相机

86次阅读
没有评论

共计 2920 个字符,预计需要花费 8 分钟才能阅读完成。

3D 相机

在 Construct 中,标准视图被限制在 2D 和滚动到 X 和 Y 坐标。3D 相机对象可以改变游戏的视点到 3D 中的任何地方,例如将相机定位到 X、Y 和 Z 坐标,朝向另一个 X、Y 和 Z 坐标。请参阅第一人称射击游戏示例,了解 3D 相机对象的功能演示。

你可以在使用 3D 的教程中了解更多关于 3D 相机以及它与其他 3D 功能如何协同工作的信息。

脚本编写

在使用 JavaScript 或 TypeScript 编码时,可以通过 I3DCameraObjectType 脚本接口访问此对象的功能。

使用 3D 相机

默认情况下,Construct 将使用标准 2D 视图,使用标准滚动功能在 2D 中平移视图。查看位置、查看平行布局和设置位置操作启用 3D 视图,这将覆盖标准 2D 视图 – 标准滚动功能不再对 3D 视图有任何影响。可以使用恢复 2D 相机操作恢复标准 2D 视图。

3D 相机对象仅适用于其渲染模式属性设置为 3D 的图层。使用 2D 渲染模式的图层将忽略 3D 相机并继续使用标准 2D 视图和使用标准滚动功能。这对于在 3D 视图上显示的 2D 界面很有用。

3D 音频

在 3D 中移动相机时,播放定位声音可能会有用,这将调整播放以使它们听起来像是来自 3D 空间中的一个位置。这可以通过在音频对象中设置监听器方向,并在对象(也将使用它们的 Z 高程作为声音的 Z 坐标)或允许指定声音的 X、Y 和 Z 坐标的位置播放定位声音来完成。

3D 相机属性

3D 相机对象有两个属性:Z 缩放和默认相机 Z。这些是相关的,并受 Z 轴缩放项目属性的影响。属性定义如下。

Z 缩放

Z 轴上的每单位像素数。使用常规 Z 轴缩放,这总是 1,因为 Z 轴使用与其他轴相同的比例。

默认相机 Z

相机在 Z 轴上的默认位置,以 100%的比例在布局上产生 2D 渲染。使用标准化 Z 轴缩放(默认),默认相机 Z 设置为 100。然后 Z 缩放告诉你 Z 轴上每个单位等效于多少像素。

与常规 Z 轴缩放,Z 缩放总是 1,因为 Z 轴使用与 X 和 Y 轴相同的比例。然后调整默认相机 Z 以确保 2D 渲染以 100%的比例出现。注意,视野项目属性也会影响默认相机 Z。

标准化 Z 轴缩放是为使用简单 3D 功能的 2D 项目设计的,如 Z 高程。如果你的项目使用 3D 相机来采用完全 3D 视图,它可能会从使用常规 Z 轴缩放中受益。

3D 相机条件

3D 相机对象没有任何条件。

3D 相机操作

查看位置

使用相机位置、相机朝向的位置和一个向上向量设置 3D 相机的位置和方向。相机和查看位置给出为 3D 坐标。向上向量是一个 3D 向量,指定哪个方向是向上,因为这也是确定如何将相机朝查看位置定向所必需的。默认向上向量是(0,1,0),即向上是 Y 轴上的正方向,适用于顶视图。

查看平行于布局

使用相机位置和以度为单位的相机角度设置 3D 相机的位置和方向。尽管默认视图是顶视图,但这设置了沿着布局看的相机位置,使得布局出现在屏幕底部作为地板。这是使用查看位置动作查看具有向上向量(0,0,1)的 2D 角度的快捷方式。

沿相机轴移动

沿当前相机方向的轴移动相机位置、查看位置或两者的距离。距离可以是负数,例如当指定轴为右时向左移动。

注意 Z 轴的比例可能与 X 和 Y 轴不同。

沿布局轴移动

沿相对于布局的轴移动相机位置、查看位置或两者的距离。距离可以是负数,例如当指定轴为 X 时向左移动。

注意 Z 轴的比例可能与 X 和 Y 轴不同。

恢复 2D 相机

将相机恢复到其默认 2D 行为,使用标准滚动功能移动视图。

旋转相机

根据 X 和 Y 旋转度数移动相机查看位置。请注意,必须首先使用查看位置、查看平行于布局或设置位置操作启用 3D 相机,因为这些还定义了此操作旋转的起始方向。通常,旋转值将由鼠标对象的 MovementX 和 MovementY 表达式提供,在移动触发器中使用以实现“鼠标查看”– 参见第一人称平台游戏的例子。

设置视野

以度为单位设置视野角度。请注意,这只在项目属性中将 Z 轴缩放设置为常规时才有效。默认视野也在项目属性中设置。

设置位置

将相机位置或查看位置设置为 3D 坐标。这可以用于独立控制相机或查看位置,而无需始终指定两者,例如移动相机同时使用鼠标查看来控制查看方向。

3D 相机表达式

CameraX、CameraY、CameraZ

获取相机的当前 3D 位置。

LookX、LookY、LookZ

获取相机指向的当前 3D 位置。

LookVectorX、LookVectorY、LookVectorZ

获取相机指向的方向的当前向量,包括相机旋转(即使用旋转相机动作进行的应用更改,用于鼠标查看等目的)。

ZScale

Z 轴上每单位的像素数。有关详细信息,请参阅 3D 相机属性下的 Z 缩放。

DefaultCameraZ

相机在 Z 轴上的默认位置,以 100%的比例在布局上产生 2D 渲染。有关详细信息,请参阅 3D 相机属性下的 Z 缩放。

DefaultCameraZ

默认的相机在 Z 轴上的位置,产生 100% 缩放的 2D 渲染在布局上。参见 3D 相机属性下的 Z 缩放以获取更多详情。

FieldOfView

当前的视野角度。这仅适用于当 Z 轴缩放设置为常规时。

CanvasToLayerX(layer, x, y, layerZ)

CanvasToLayerY(layer, x, y, layerZ)

将帆布坐标系中的位置变换到给定 layerZ 的 Z 平面上的图层坐标。这与同名的系统表达式相似,但在 3D 中工作。

LayerToCanvasX(layer, x, y, z)

LayerToCanvasY(layer, x, y, z)

将 3D 图层坐标中的位置变换为 2D 帆布坐标。这与同名的系统表达式相似,但在 3D 中工作。

LayerToLayerX(fromLayer, toLayer, x, y, z)

LayerToLayerY(fromLayer, toLayer, x, y, z)

计算第二个图层(toLayer)上对应于第一个图层(fromLayer)上给定的 3D 位置的 2D 位置。这与同名的系统表达式相似,但在 3D 中工作。

ViewportBottomLeftX(layer)

ViewportBottomLeftY(layer)

ViewportBottomRightX(layer)

ViewportBottomRightY(layer)

ViewportTopLeftX(layer)

ViewportTopLeftY(layer)

ViewportTopRightX(layer)

ViewportTopRightY(layer)

返回可见视口四个角的 X 和 Y 位置在图层坐标中,考虑到图层的 Z 高度。这些表达式与视口系统表达式相似,但使用 3D 相机时,视口区域可以是不规则四边形而不是简单的 2D 矩形,所以这些表达式提供四个单独的位置。
如果视口的一个角不与图层平面相交,这些表达式可以返回 NaN(非数字)。

CameraXRotation

CameraYRotation

返回相机的 X 和 Y 旋转角度,由旋转相机动作设置。

转发 X

前向 Y

转发 Z

返回指向相机方向的 3D 单位向量。
注意这不包含相机旋转。使用 LookVectorX/Y/ Z 表达式来获取包括相机旋转在内的相机指向方向的向量。

右 X

右 Y

右 Z

返回指向相机右侧的 3D 单位向量,垂直于向前向量。

UpX

UpY

UpZ

返回相机上向量的 3D 单位向量,帮助确定相机方向。注意这是从给定的相机和查看位置重新计算的,所以可能与在查看位置动作中给定的上向量不完全相同。

正文完
 0
评论(没有评论)