【教程】LuaEngine开发教程(七) - 引擎的使用与功能讲解上

LuaEngine的引擎是由Lua编写的对LuaEngine调用的封装,引擎会在游戏启动时被加载到lua环境中,本篇教程我们会讲解引擎的使用和注意事项。


主引擎

主引擎是引擎的入口,LuaEngine只会加载主引擎文件,在主引擎中会读取模组目录下的子引擎并自带加载

print

引擎重写了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)

by Alcedo 更新于 2024-01-18
打赏后可直接下载附件 赠人玫瑰 手留余香
默认
最新
1