空白Actor(EmptyActor)
空白Actor(Empty),会生成一个空间小球,但是没有具体的含义。
1. 属性
变换 : 变换是Actor的常规属性,该属性决定了Actor在场景中的姿态信息。
- 位置 : Actor在世界中的位置。
- 旋转 : Actor的旋转值。
缩放 : Actor的缩放值。
Actor常规设置
Dummy显示 : 用于控制是否显示该Actor的一些辅助绘图。
如图所示的小白球即为空Actor的dummy,因为空Actor的特殊性(没有样貌),在不选中它时我们无法很直观的明确它在场景中的哪个位置。所以编辑器会自动在它所在的位置绘制一个小白球。如果关闭Dummy的显示,小白球就不会被绘制。
包围盒显示 : 用于控制是否显示该Actor的包围盒。包围盒直观地明确了Actor在世界中的大小。显示包围盒一般用于美术人员观测Actor的体积大小。
因为空Actor没有体积,所以这里用小熊来做示例:隐藏 : 用于控制显隐Actor。也可以在世界大纲中点击小眼睛图标来控制。
绘制附加效果 : 用于控制是否绘制Actor的附加效果,目前没有附加效果可以绘制。
包围盒颜色 : 用于控制绘制的包围盒颜色。
启动点选 : 用于控制Actor能否被鼠标(移动端是手指)点中。
一般点选用于控制游戏中Actor是否与玩家进行交互,比如是否能被玩家点中并触发相应事件。这里可以在编辑器中进行编辑,减少代码量。点选优先级 : 在场景中存在多个Actor时,默认的点选顺序为从近到远,即离得越近的Actor会先被点中,就像日常生活中我们的视线向一个方向看时,近的物体会把远的物体遮挡。
但是如果某些Actor即使被其它Actor挡住也要优先响应用户的点选时,可以为其指定点选优先级,并将优先级调高。
越高的优先级会越先响应点选事件,同优先级的Actor再按照从近到远响应点选事件。
筛选路径 : 该路径仅作展示用,无法被编辑。仅用于确认是用户创建Actor还是系统Actor。
+碰撞/点选通道 : 该通道可以在代码中对点选Actor进行筛选。比如控制本次手指点击事件仅能点中类型为XEActor的Actor。该功能会在碰撞/点选相关功能中介绍。
2. 在代码中获取
local actor = world:CreateActor(XEActor.ACTOR_TYPENAME)
actor:SetActorName("MyActor")
-- 获取变换属性
---@class XVECTOR3
local position = actor:GetActorLocation()
actor:SetActorLocation(position)
---@class XQUATERNION
local rotation = actor:GetActorRotation()
actor:SetActorRotation(rotation)
---@class XVECTOR3
local scale = actor:GetActorScale()
actor:SetActorScale(scale)
--获取包围盒
---@class XCusAABB
local aabb = actor:GetCusAABB()
--显示包围盒
actor:SetDrawDebugType(XEActor.EDD_BOUNDINGBOX)
--隐藏包围盒
actor:SetDrawDebugType(0)
--获取碰撞/点选通道
local collisionChannel = actor:GetCollisionChannel()
--设置碰撞/点选通道
actor:SetCollisionChannel(XECollisionChannelMeta(XECollisionChannelMeta.ECC_CUSTOM_6, ""))
--是否启用点选
local bEnable = actor:IsPickEnable()
--设置点选
actor:SetPickMask(XEHitResult.XHR_EnableHit)
--关闭点选
actor:SetPickMask(0)
--获取点选优先级
local value = actor:GetPickPriority()
--设置点选优先级
actor:SetPickPriority(value)