Npc : Entity

NPC泛指除了玩家之外的所有生物,如动物、敌怪、村民、BOSS等。Npc类表示具有生物基本信息的非玩家实体类。

属性

属性
int id 【只读】当前NPC的动态ID。
NpcType type 【只读】当前NPC的类型。
Attack baseAttack 当前NPC的基础攻击属性。
double defaultMaxSpeed 【只读】当前NPC的默认最大横向移动速度。
double maxSpeed 当前NPC的最大横向移动速度。每帧重置为所在环境(流体黏性等)决定的最大移动速度。
double defaultGravity 【只读】当前NPC的默认重力加速度。
double gravity 当前NPC的纵向加速度。每帧重置为作用了所在环境纵向受力以及重力后的纵向加速度。
double defaultMaxFallSpeed 【只读】当前NPC的默认最大下落速度。
double maxFallSpeed 当前NPC的最大下落速度。每帧重置为作用了所在环境纵向阻力后的最大下落速度。
double defaultJumpForce 【只读】当前NPC的默认跳跃力度。
double jumpForce 当前NPC的跳跃力度。每帧重置为作用了所在环境纵向阻力后的跳跃力度。
bool noMove 决定当前NPC在行走模板中是否停止行走。
bool inLiquid只读】当前NPC是否处在流体环境中。
bool oldInLiquid 【只读】上一帧的NPC是否处在流体环境中。
int touchLiquidID 【只读】当前NPC所处流体环境的ID。如果不在任何流体内,则ID总是为0。
bool isEnemy 【只读】当前NPC是否会伤害玩家。
bool state NPC当前在简单有限状态机中的状态。
int stateTimer NPC的状态机计时器。
bool hurry 当前NPC是否为匆忙状态。匆忙状态下随机走模板不会停下来。
int maxHealth 当前NPC的生命值上限。
int health 当前NPC的生命值。
bool angry 当前NPC是否为愤怒状态。易怒的NPC在被玩家击中后会将该玩家视为目标,并置愤怒状态为true。
int animation NPC当前执行的动画状态。通常用于表示骨骼模型的动画状态。
int animationTickTime NPC在当前动画索引所经过的时间。每帧自动自增1,当动画状态切换时自动重置为0。
double watchAngle 【只读】NPC的目视角度。若NPC目标存在,则总是目视目标。否则总是根据朝向水平目视。
ArrayList<ItemSlot> itemSlots 当前NPC自己的物品格子列表。物品格子数目在NPC的AI数据表中指定。
NpcType type 【只读】NPC类型。
double spawnCount
占用生成量。
double defaultKnockBackDefenseValue
击退抗性。
double toolUseRate
工具使用概率。
int maxDisappearTime
最大消失时间。
int defaultDefenseValue
防御力。
int defaultAttackValue
攻击力。
int defaultCritValue
双倍暴击率百分比。
int defaultKnockBackValue
击退力。
int movement
运动方式。
int gfxOffsetX
贴图偏移量X。
int gfxOffsetY
贴图偏移量Y。
int gfxWidth
贴图宽度。
int gfxHeight
贴图高度。
int frameStyle
贴图方式 0-不分左右 1-分左右。
int exps
经验值。
int checkTargetDistance
检测目标的半径。
int special
特殊值。
int magicRate
产生魔法碎片概率的反比)
bool friendly
是否友好。
bool hasGravity
是否受重力。
bool canClimbWal
是否能爬墙。
bool isForeground
是否置前。
bool isAntiLava
是否抵抗岩浆。
bool noFixByBlock
是否不根据方块修正位置。
bool willBurnUnderSun
是否白天自燃。
bool defaultAngry
是否易怒。
bool isBoss
是否作为BOSS。
bool noShowHp
是否不显示血条。
bool noBurnSound
是否不播放燃烧音效。
bool usingBoneModule
【只读】是否使用骨骼模型。
bool isCheckPlayerTarget
是否自动检测玩家目标。
bool isVisionNoCrossTile
是否视野不穿墙。
bool isAutoSave
是否保存到存档。
bool netUpdate
【只读】是否使用逻辑网络同步。

类成员函数

函数
void Npc:Kill() 不掉落物品直接清除当前NPC对象。
void Npc:Strike(Attack attack, double hitAngle = 0, bool immune = true, bool hurtSound = true, int lootingLevel = 0) 制造一个对当前NPC的伤害。 attack:当前伤害属性。 hitAngle:产生伤害的角度。 immune:产生当前伤害后是否让NPC处于无敌帧状态。 hurtSound:是否播放NPC受伤音效。 lootingLevel:掠夺等级。
void Npc:StrikeFromPlayer(Player player, Attack attack, double hitAngle = 0, bool immune = true, bool hurtSound = true, int lootingLevel = 0) 制造一个某玩家对当前NPC的伤害。 player:造成伤害的玩家。
void Npc:StrikeFromNpc(Npc npc, Attack attack, double hitAngle = 0, bool immune = true, bool hurtSound = true, int lootingLevel = 0) 制造一个某NPC对当前NPC的伤害。 npc:造成伤害的NPC。
Player/nil Npc:GetPlayerTarget() 若当前NPC的玩家锁定目标存在且存活,返回该玩家对象,否则返回nil。
void Npc:AddBuff(int buffID, int buffTime) 为当前NPC添加一个状态效果。若原状态效果存在,以最长时间为新状态效果的持续时间。
void Npc:RemoveBuff(int buffID) 移除一个状态效果。
void Npc:RemoveAllBuff() 移除全部状态效果。
bool Npc:HasBuff(int buffID) 返回NPC是否拥有指定状态效果。
bool Npc:HasAnyBuff() 返回NPC是否存在状态效果。
void Npc:TryMakeSound(int tryTimes = 512) NPC尝试发出平时声音。平均经过tryTimes时间发出一次平时声音。
void Npc:MakeSound() NPC发出平时声音。
void Npc:UseTool(ItemSlot itemSlot, int skJointID) NPC使用指定物品格子内的工具。 itemSlot:指定物品格子。 skJointID:当前NPC使用工具的骨骼模型关节ID。
void Npc:Stand(bool faceToTarget = true) 站立静止不动。目标存在时,faceToTarget表示始终面朝玩家。
void Npc:RandomWalk(int idleTime = 128, int idleTimeOffset = 64, int walkTime = 96, int walkTimeOffset = 32) 随机地朝一个方向行走或停下或转弯。
停下时闲置idleTime ± idleTimeOffset范围内随机时间。
朝一个方向行走时持续walkTime ± walkTimeOffset范围内随机时间。
使用内置寻路逻辑,遇到墙壁会尝试跳跃3次。
void Npc:KeepWalking(bool followTarget = true) 持续行走而不停下。followTarget表示在目标存在的情况下,尽可能靠近目标。
使用内置寻路逻辑,遇到墙壁会尝试跳跃3次。
void Npc:Walk(bool followTarget = true) 目标存在时,采用Npc:KeepWalking,followTarget表示尽可能靠近目标。
目标不存在时,采用Npc:RandomWalk。
void Npc:Swim(bool followTarget = true) 在流体中游泳,在空气中蹦跶。
目标存在时,followTarget表示尽可能靠近目标。否则在流体中随机运动。
void Npc:Fly(bool followTarget = true, double force = 0.1, bool gradientSpeed = false) 在空气中飞行。
目标存在时,followTarget表示尽可能靠近目标,force表示飞向目标的力,gradientSpeed表示是否使用渐变速度,否则运动速度的向量大小总是恒定的。 目标不存在时,在空气中随机运动。
bool Npc:RandomTeleport(int distance, bool noToAir = true, bool noToLiquid = true) 传送NPC自己到以自己为圆心的圆形区域随机位置。若传送成功,返回true,否则返回false。
distance:圆形区域的半径。 noToAir:是否不传送到半空中(即传送到地面上)。 noToLiquid:是否不传送到流体内。