> 神唱K歌 > 【由我脚本】升降电梯脚本讲解

【由我脚本】升降电梯脚本讲解

MyTable =
{
EntryInfo = {ONLOADED,"state1"};
StateList = {"state1"};
state1 =
{
Timer = 1000,--1000指在状态1,1秒执行一次 function MyTable.state1.OnTimer(args) 函数
TimeOut = -1,
NextState = "nil",
EventList = {ONSENSOR}; --ONSENSOR指在状态1,扫描函数触发的事件,扫描函数有uScan、uScanLandUnit、uScanPersonalLand、uScanPoint等
};
}
function MyTable.state1.OnEnter(args)
itemposition = uGetItemPos (uGetItemId());--将物品的位置赋值给itemposition,记录物品初始位置
flag=0 --电梯是否被使用的标记,0表示无人使用,1表示正在被使用
end

function MyTable.state1.OnTimer(args)
ret=uScanRetPoint(1,1,1,uGetItemId()); --以指定物体为中心1米范围内,扫描1个用户,并返回用户的ID。其中第一个参数1表示扫描的对象是人,第二个参数1表示扫描对象的数量是1,第三个参数1表示扫描的范围是1米
if ret~="" then --返回值不为空,表示扫描到了用户
if flag==0 then --判断电梯是不是无人使用
uScanPoint(1,"NULL",1,uGetItemId()); --以物体为中心,扫描1米范围内是否有用户,如有则返回扫描成功,并触发ONSENSOR事件。其中第一个表示扫描的对象是人,第二个参数"NULL"表示只要扫描到有指定类型的对象,则搜索成功,第三个参数1表示扫描的范围是1米
end
else --返回值为空,没有扫描到用
if flag==1 then --判断电梯是不是被用户使用
uMoveDefaultItemTo(itemposition.x,itemposition.y,itemposition.z);--将电梯降回初始位置
flag=0; --将电梯标记为无人使用
end
end
end

function MyTable.state1.OnSensor(args)--扫描条件满足,即扫描到了指定类型的指定id,可触发该函数
uMoveDefaultItemTo(itemposition.x,itemposition.y,itemposition.z+10);--将电梯移动至初始位置高度+10的高度
flag=1; --将电梯标记为正在被使用
end

function MyTable.state1.OnExit(args)
end

--脚本基本结构讲解见:http://www.3d-ktv.com/html/shenchang/322.html