🏆 导航菜单
🎪 扩展内容
🎯 沙盘引擎文档
🕹️ 文章及书籍&教程
🎖️ 外部的链接
🏆 导航菜单
🎪 扩展内容
🎯 沙盘引擎文档
🕹️ 文章及书籍&教程
🎖️ 外部的链接
注意:Checkpoint
仅允许Character
类型主动触发,如果Character
正在驾驶\乘坐载具,则会在载具进入触发范围时所有载具内角色触发相关事件。
当角色进入检查点时触发,角色同一时间可触发多个检查点(如果在范围内)。
function OnCheckpointEntered( checkpoint, character ) { DLog("OnCheckpointEntered: " + checkpoint.ID); switch(checkpoint.ID) { case 0: //直接销毁检查点 checkpoint.Remove(); //doSomething... break; case 1: //动态修改检查点属性 checkpoint.Radius = 5.0; //将尺寸改成5.0 checkpoint.Color = Color(255, 0, 0); //将颜色改成红色 //doSomething... break; } }
当角色离开检查点时触发。
function OnCheckpointExited( checkpoint, character ) { DLog("OnCheckpointExited: " + checkpoint.ID); }
获取检查点序列ID,每个实例ID是唯一的。
当之前的实例被销毁后,空闲的靠前ID将会被后续新实例重新使用(对于特殊情况,UUID
是更合适的筛选选择)。
checkpoint.ID: int
获取检查点UUID,这是由一串较长的字符串组成的全局唯一文本ID(实例化时自动赋值,非持久化数据)。
checkpoint.UUID: string
设置检查点坐标。
checkpoint.Pos = Vector(0, 0, 0);
设置检查点实例世界ID(不同世界将不可视\不可交互)。
checkpoint.World = 0; //int
设置检查点实例组(这是一个Entity基类通用属性)。
默认值0
表示特殊组(无分组机制),如实例组不为0,则只有相同组的检查点和对象才会触发。
checkpoint.Group = 0; //int
设置检查点实例类型,如设置为-1
则不显示检查点包围样式(完全不可见,只有检查作用的检查点),类型样式参考《世界资源实例汇总》。
checkpoint.Type = 1; //int
设置检查点实例包围颜色,默认为Color(0, 0, 0, 0)
,不修改则使用Type
默认的样式颜色。
checkpoint.Color = Color(255, 255, 255);
设置检查点实例半径(尺寸),默认适合角色的尺寸是2.0
。
checkpoint.Radius = 2.0;
获取检查点当前正在触发的角色单位数量,此功能通常搭配checkpoint.GetOccupant()
使用。
checkpoint.OccupantCount: int
生成一个新的检查点实例,Type
类型样式参考《世界资源实例汇总》。
function Checkpoint.Create( type: int, pos: Vector, color: Color = null, radius: float = 2 ): Checkpoint
//在0点坐标处,建立一个类型为0、红色、尺寸为3.0的检查点实例 Checkpoint.Create(0, Vector(0, 0, 0), Color(255, 0, 0), 3.0);
寻找一个检查点实例(通过ID),不存在则返回null
。
function Checkpoint.Find( id: int ): Checkpoint
寻找一个检查点实例(通过UUID),不存在则返回null
。
function Checkpoint.FindByUUID( uuid: string ): Checkpoint
获取当前所有存在检查点数量。
function Checkpoint.GetCount(): int
获取当前存在的指定索引检查点,通常搭配GetCount()
遍历使用。
function Checkpoint.Get( index: int ): Checkpoint
销毁当前检查点实例。
function checkpoint.Remove()
获取当前检查点实例正在触发的(指定索引)角色实例。
function checkpoint.GetOccupant( index: int ): Character
//遍历获取正在触发的所有角色 let occCount = checkpoint.OccupantCount; for(let i=0;i<occCount;i++) { DLog(checkpoint.GetOccupant(i).Name + "正在检查点中..."); }