LuaEngine的引擎是由Lua编写的对LuaEngine调用的封装,引擎会在游戏启动时被加载到lua环境中,本篇教程我们会讲解引擎的使用和注意事项。
主引擎
主引擎是引擎的入口,LuaEngine只会加载主引擎文件,在主引擎中会读取模组目录下的子引擎并自带加载
引擎重写了lua的print功能,使得其能在LuaEngine环境下使用,print功能目前可以输出string和table类型的数据到前置命令窗口中
engine.keypad
此功能可以通过预设的按键检查玩家是否按下了某个键(组合键)
键盘按键与组合键是否按下检测
engine.keypad({'Ctrl', '+'})
engine.keypad('Num0')
Xbox手柄按键按下检测
engine.keypad({'LB', 'R→'}, true)
engine.keypad('RB', true)
按键名称不区分大小写,全部可用按键在引擎主文件Engine.lua中可用找到
engine.distance
此功能可以计算两个三维点之间的距离,使用方法如下
local distance = engine.distance({x = 1, y = 1, z = 1}, {x = 19, y = 19, z = 19})
engine.table_include
此功能可以判断某个值是否在table中,使用方法如下
if engine.table_include(1, {4, 2, 7, 1}) then
end
engine.GetAllFiles
此功能可以获取目录下所有文件的信息,第一个参数是要获取的目录,第二个参数是是否进行子目录遍历,使用方法如下
local files = engine.GetAllFiles("./Lua", true)
Player引擎
玩家引擎可以对玩家引擎内的玩家数据进行读取或修改,如果对应的数值未能获取到,则会返回默认值,通常默认值为0或false
模块引擎通常需要进行实例化才能使用,你可以使用以下代码实例化Player引擎
local Data_Player = engine.Player:new()
后续的模块引擎可以使用同样的方法进行实例化
Position
Position中记录了玩家坐标相关的信息
- position 玩家当前的坐标 {x = 0, y = 0, z = 0}
- cntrposition (只读) 玩家中心点的坐标 {x = 0, y = 0, z = 0, h = 0} h是高度
- reposition 玩家折返的坐标 {x = 0, y = 0, z = 0}
- incremental (只读) 玩家运动的坐标增量 {x = 0, y = 0, z = 0}
Model
Model中记录了玩家模型的缩放信息
- size 玩家模型的缩放 {x = 0, y = 0, z = 0}
Collimator
Collimator中记录了玩家瞄准的坐标信息
- straightPos (只读) 直线瞄准坐标 {x = 0, y = 0, z = 0}
- parabolaPos (只读) 曲线瞄准坐标 {x = 0, y = 0, z = 0}
- aimingState (只读) 瞄准状态 false
Angle
Angle中记录了玩家的四元数和欧拉角信息
- Quaternion 四元数 {w=0, x = 0, y = 0, z = 0}
- Eulerian (只读) 欧拉角 {x = 0, y = 0, z = 0}
Weapon
Weapon中记录了玩家的武器信息
- position (只读) 玩家主武器坐标 {w=0, x = 0, y = 0, z = 0}
- type (只读) 玩家武器类型 0
- id (只读) 玩家武器Id 0
- hit (只读)(废弃) 玩家最后命中的怪物地址 0
Armor
Armor中记录了玩家的装备信息
- head (只读) 头id 0
- chest (只读) 胸id 0
- arm (只读) 手id 0
- waist (只读) 腰id 0
- leg (只读) 鞋id 0
Layered
Layered中记录了玩家装备幻化信息
- layeredHead
- layeredChest
- layeredArm
- layeredWaist
- layeredLeg
Characteristic
Characteristic中记录了玩家状态信息
health
- health_base 基础血量
- health_current 当前血量
- health_max 最大血量
stamina
- stamina_current 当前耐力
- stamina_max 最大耐力
- stamina_eat 饥饿
Action
Action中记录了玩家动作信息
- lmtID
- useItem 是否在使用物品
fsm
- fsmID
- fsmTarget
Gravity
Gravity中记录了玩家重力信息
- gravity 重力
- fall 下落速率
- liftoff 是否在空中
Frame
Frame中记录了玩家动作帧信息
- frame 当前帧
- frameEnd 结束帧
- frameSpeed 帧速率
- frameSpeedMultiplies 帧速率倍率
玩家引擎中包含了一个额外的函数AimPosition可以使得玩家朝向指定坐标
local Data_Player = engine.Player:new()
Data_Player:AimPosition(Data_Player.Collimator.straightPos)