跳转到内容

PlayInteractive

游玩交互

用于游玩时对场景物体进行点击拖拽等交互行为的控制

枚举列表

PlayInteractive.HIT_TYPE

  • 描述: 碰撞物体类型
成员名称成员说明
Element元件
Creature生物
Character角色
TriggerBox触发盒

PlayInteractive.DIR_TYPE

  • 描述: 平面方向类型
成员名称成员说明
XY沿XY平面方向
XZ沿XZ平面方向
YZ沿YZ平面方向

函数列表

SetEnableMotionState

  • 描述: 设置玩家是否启用陀螺仪。

  • 范围: 客户端

参数列表:

参数类型说明
IsEnableboolean是否启用陀螺仪
PlayInteractive:SetEnableMotionState(true)

GetIsMotionStateEnable

  • 描述: 获取玩家是否启用陀螺仪。

  • 范围: 客户端

返回字段:

返回字段字段类型说明
isEnableboolean是否启用陀螺仪
local isEnable = PlayInteractive:GetIsMotionStateEnable()

GetTile

  • 描述: 返回陀螺仪倾斜度。

  • 范围: 客户端

返回字段:

返回字段字段类型说明
tileEngine.Vector陀螺仪倾斜度
local tile = PlayInteractive:GetTile()

GetRotationRate

  • 描述: 返回陀螺仪角速度。

  • 范围: 客户端

返回字段:

返回字段字段类型说明
rotationRateEngine.Vector陀螺仪角速度
local rotationRate = PlayInteractive:GetRotationRate()

GetGravity

  • 描述: 返回陀螺仪重力。

  • 范围: 客户端

返回字段:

返回字段字段类型说明
gravityEngine.Vector陀螺仪重力
local rotationRate = PlayInteractive:GetGravity()

GetAcceleration

  • 描述: 返回陀螺仪加速度。

  • 范围: 客户端

返回字段:

返回字段字段类型说明
accelerationEngine.Vector陀螺仪加速度
local acceleration = PlayInteractive:GetAcceleration()

SetCreatureClick

  • 描述: 设置生物是否可以被点击

  • 范围: 服务端、客户端

  • 警告: 游戏开始时会初始化地图数据,请在 Events.ON_BEGIN_PLAY 事件至少一帧之后设置,避免数据被重置

参数列表:

参数类型说明
CreatureIdnumber生物元件ID
ClickAbleboolean是否可以被点击
PlayInteractive:SetCreatureClick(343, true)

SetCreatureDrag

  • 描述: 设置生物是否可以被拖动

  • 范围: 服务端、客户端

  • 警告: 游戏开始时会初始化地图数据,请在 Events.ON_BEGIN_PLAY 事件至少一帧之后设置,避免数据被重置

参数列表:

参数类型说明
CreatureIdnumber生物元件ID
DraggAbleboolean是否可以被拖动
PlayInteractive:SetCreatureDrag(343, true)

SetCreatureDragDirectionType

  • 描述: 设置拖拽平面,拖拽时沿着此平面运动

  • 范围: 服务端、客户端

  • 警告: 游戏开始时会初始化地图数据,请在 Events.ON_BEGIN_PLAY 事件至少一帧之后设置,避免数据被重置

参数列表:

参数类型说明
CreatureIdnumber生物元件ID
DirectionTypePlayInteractive.DIR_TYPE指定平面方向
PlayInteractive:SetCreatureDragDirectionType(343, PlayInteractive.XY)

SetCreatureOwner

  • 描述: 设置生物所属玩家

  • 范围: 服务端、客户端

  • 警告: 游戏开始时会初始化地图数据,请在 Events.ON_BEGIN_PLAY 事件至少一帧之后设置,避免数据被重置

参数列表:

参数类型说明
CreatureIdnumber生物元件ID
PlayerIdsnumber[]玩家ID数组
local playerIds = Character:GetAllPlayerIds()
PlayInteractive:SetCreatureOwner(343, playerIds)

SetElementClick

  • 描述: 设置元件是否可以被点击

  • 范围: 服务端、客户端

  • 警告: 游戏开始时会初始化地图数据,请在 Events.ON_BEGIN_PLAY 事件至少一帧之后设置,避免数据被重置

参数列表:

参数类型说明
ElementIdnumber元件ID
ClickAbleboolean是否可以被点击
PlayInteractive:SetElementClick(347, true)

SetElementDrag

  • 描述: 设置元件是否可以被拖动

  • 范围: 服务端、客户端

  • 警告: 游戏开始时会初始化地图数据,请在 Events.ON_BEGIN_PLAY 事件至少一帧之后设置,避免数据被重置

参数列表:

参数类型说明
ElementIdnumber元件ID
DraggAbleboolean是否可以被拖动
PlayInteractive:SetElementDrag(347, true)

SetElementDragDirectionType

  • 描述: 设置拖拽平面,拖拽时沿着此平面运动

  • 范围: 服务端、客户端

  • 警告: 游戏开始时会初始化地图数据,请在 Events.ON_BEGIN_PLAY 事件至少一帧之后设置,避免数据被重置

参数列表:

参数类型说明
ElementIdnumber元件ID
DirectionTypePlayInteractive.DIR_TYPE指定平面方向
PlayInteractive:SetElementDragDirectionType(347, PlayInteractive.DIR_TYPE.XY)

SetElementOwner

  • 描述: 设置元件所属玩家

  • 范围: 服务端、客户端

  • 警告: 游戏开始时会初始化地图数据,请在 Events.ON_BEGIN_PLAY 事件至少一帧之后设置,避免数据被重置

参数列表:

参数类型说明
ElementIdnumber元件ID
PlayerIdsnumber[]玩家ID数组
local playerIds = Character:GetAllPlayerIds()
PlayInteractive:SetElementOwner(347, playerIds)

GetHitResultWithRaycast

  • 描述: 获取射线碰撞检测的首个物体(角色、生物、元件、触发盒)

  • 范围: 服务端、客户端

参数列表:

参数类型说明
HitTypePlayInteractive.HIT_TYPE碰撞检测物体类型
StartWorldPosEngine.Vector起始坐标
EndWorldPosEngine.Vector终止坐标
EnableDebugLineboolean是否绘制Debug射线(仅试玩),默认为false
DebugLineDurationnumberDebug射线的持续时间,单位秒,默认为1

返回字段:

返回字段字段类型说明
idnumber碰撞到的物体ID,没有碰撞到时返回nil
hitInfo{hitPos:Engine.Vecto,hitNormal:Engine.Vector}碰撞信息,{hitPos-射线碰撞到的位置坐标点, hitNormal-射线碰撞到的表面法线方向}
local startPos = Engine.Vector(500, -100, 150)
local endPos = Engine.Vector(500, -500, 150)
local id, hitInfo = PlayInteractive:GetHitResultWithRaycast(PlayInteractive.HIT_TYPE.Element, startPos, endPos, false, 0)

GetHitResultsWithRaycast

  • 描述: 获取射线碰撞检测的物体id数组(角色、生物、元件、触发盒)

  • 范围: 服务端、客户端

参数列表:

参数类型说明
HitTypePlayInteractive.HIT_TYPE碰撞检测物体类型
StartWorldPosEngine.Vector起始坐标
EndWorldPosEngine.Vector终止坐标
EnableDebugLineboolean是否绘制Debug射线(仅试玩),默认为false
DebugLineDurationnumberDebug射线的持续时间,单位秒,默认为1

返回字段:

返回字段字段类型说明
idsnumber[]碰撞到的物体ID数组
local startPos = Engine.Vector(500, -100, 150)
local endPos = Engine.Vector(500, -500, 150)
local ids = PlayInteractive:GetHitResultsWithRaycast(PlayInteractive.HIT_TYPE.Element, startPos, endPos, false, 0)

GetHitResultWithCapsule

  • 描述: 获取一个竖立摆放的胶囊体在两点之间移动进行扫掠过程中碰撞检测的首个物体(角色、生物、元件、触发盒)

  • 范围: 服务端、客户端

参数列表:

参数类型说明
HitTypePlayInteractive.HIT_TYPE碰撞检测物体类型
StartWorldPosEngine.Vector胶囊体进行扫掠检测碰撞时的起始坐标
EndWorldPosEngine.Vector胶囊体进行扫掠检测碰撞时的终止坐标
CapsuleRadiusnumber胶囊体的半径,胶囊体两端半球的半径大小
CapsuleHalfHeightnumber胶囊体的半高,胶囊体中心点到两端的距离大小,当半高<=半径时,表现为一个半径为CapsuleRadius球体扫掠
EnableDebugLineboolean是否绘制胶囊体扫射轨迹Debug线(仅试玩),默认为false
DebugLineDurationnumberDebug线的持续时间,单位秒,默认为1

返回字段:

返回字段字段类型说明
idnumber碰撞到的物体ID,没有碰撞到时返回nil
local startPos = Engine.Vector(500, -100, 150)
local endPos = Engine.Vector(500, -500, 150)
local radius, height = 30, 30
local id = PlayInteractive:GetHitResultWithCapsule(PlayInteractive.HIT_TYPE.Element, startPos, endPos, radius, height, false, 0)

GetHitResultsWithCapsule

  • 描述: 获取一个竖立摆放的胶囊体在两点之间移动进行扫掠过程中碰撞检测的物体id数组(角色、生物、元件、触发盒)

  • 范围: 服务端、客户端

参数列表:

参数类型说明
HitTypePlayInteractive.HIT_TYPE碰撞检测物体类型
StartWorldPosEngine.Vector胶囊体进行扫掠检测碰撞时的起始坐标
EndWorldPosEngine.Vector胶囊体进行扫掠检测碰撞时的终止坐标
CapsuleRadiusnumber胶囊体的半径,胶囊体两端半球的半径大小
CapsuleHalfHeightnumber胶囊体的半高,胶囊体中心点到两端的距离大小,当半高<=半径时,表现为一个半径为CapsuleRadius球体扫掠
EnableDebugLineboolean是否绘制胶囊体扫射轨迹Debug线(仅试玩),默认为false
DebugLineDurationnumberDebug线的持续时间,单位秒,默认为1

返回字段:

返回字段字段类型说明
idsnumber[]碰撞到的物体ID数组
local startPos = Engine.Vector(500, -100, 150)
local endPos = Engine.Vector(500, -500, 150)
local ids = PlayInteractive:GetHitResultsWithCapsule(startPos, endPos, false, 0)

CheckCharacterHit

  • 描述: 两个角色之间做射线检测

  • 范围: 服务端、客户端

参数列表:

参数类型说明
PlayerId1number玩家1 uid
PlayerId2number玩家2 uid
EnableDebugLineboolean是否绘制Debug射线,仅试玩生效
DebugLineDurationnumberDebug射线的持续时间,单位:s

返回字段:

返回字段字段类型说明
bHitboolean是否有遇到障碍物
local bHit = PlayInteractive:CheckCharacterHit(playerId1, playerId2, true, 10)