沙盘引擎 (SEngine)

创意诞生沙盘世界,不止如此想象!

用户工具

站点工具


scripting:world:checkpoint

📚 World/Checkpoint

注意:Checkpoint仅允许Character类型主动触发,如果Character正在驾驶\乘坐载具,则会在载具进入触发范围时所有载具内角色触发相关事件。

📒 Event

📘 OnCheckpointEntered( checkpoint, 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;
	}
}

📘 OnCheckpointExited( checkpoint, character )

当角色离开检查点时触发。

function OnCheckpointExited( checkpoint, character )
{
	DLog("OnCheckpointExited: " + checkpoint.ID);
}

📒 Property

📘 checkpoint.ID

获取检查点序列ID,每个实例ID是唯一的。

当之前的实例被销毁后,空闲的靠前ID将会被后续新实例重新使用(对于特殊情况,UUID是更合适的筛选选择)。

checkpoint.ID: int

📘 checkpoint.UUID

获取检查点UUID,这是由一串较长的字符串组成的全局唯一文本ID(实例化时自动赋值,非持久化数据)。

checkpoint.UUID: string

📘 checkpoint.Pos

设置检查点坐标。

checkpoint.Pos = Vector(0, 0, 0);

📘 checkpoint.World

设置检查点实例世界ID(不同世界将不可视\不可交互)。

checkpoint.World = 0; //int

📘 checkpoint.Group

设置检查点实例组(这是一个Entity基类通用属性)。

默认值0表示特殊组(无分组机制),如实例组不为0,则只有相同组的检查点和对象才会触发。

checkpoint.Group = 0; //int

📘 checkpoint.Type

设置检查点实例类型,如设置为-1则不显示检查点包围样式(完全不可见,只有检查作用的检查点),类型样式参考《世界资源实例汇总》

checkpoint.Type = 1; //int

📘 checkpoint.Color

设置检查点实例包围颜色,默认为Color(0, 0, 0, 0),不修改则使用Type默认的样式颜色。

checkpoint.Color = Color(255, 255, 255);

📘 checkpoint.Radius

设置检查点实例半径(尺寸),默认适合角色的尺寸是2.0

checkpoint.Radius = 2.0;

📘 checkpoint.OccupantCount

获取检查点当前正在触发的角色单位数量,此功能通常搭配checkpoint.GetOccupant()使用。

checkpoint.OccupantCount: int

📒 Static Function

📘 Checkpoint.Create()

生成一个新的检查点实例,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);

📘 Checkpoint.Find()

寻找一个检查点实例(通过ID),不存在则返回null

function Checkpoint.Find( id: int ): Checkpoint

📘 Checkpoint.FindByUUID()

寻找一个检查点实例(通过UUID),不存在则返回null

function Checkpoint.FindByUUID( uuid: string ): Checkpoint

📘 Checkpoint.GetCount()

获取当前所有存在检查点数量。

function Checkpoint.GetCount(): int

📘 Checkpoint.Get()

获取当前存在的指定索引检查点,通常搭配GetCount()遍历使用。

function Checkpoint.Get( index: int ): Checkpoint

📒 Function

📘 checkpoint.Remove()

销毁当前检查点实例。

function checkpoint.Remove()

📘 checkpoint.GetOccupant()

获取当前检查点实例正在触发的(指定索引)角色实例。

function checkpoint.GetOccupant( index: int ): Character
//遍历获取正在触发的所有角色
let occCount = checkpoint.OccupantCount;
for(let i=0;i<occCount;i++)
{
	DLog(checkpoint.GetOccupant(i).Name + "正在检查点中...");
}

scripting/world/checkpoint.txt · 最后更改: 2024/06/30 19:23 由 bibiboxs