📔
TerraCraft
  • TerraCraft
  • English
    • Mod Document
      • Mod Dev Official Tutorial
      • Mod API Document
        • Data Types and Enums
        • JSON
        • Entity
        • NPC
  • 简体中文(旧版教程)
    • 模组文档
      • Engine API
        • App
        • AssetBundle
        • AtlasInfo
        • AtlasTextureManager
        • Audio
        • Bytes
        • File
        • GameObject
        • GlobalHook
        • Graphics
        • Hotfix
        • Image
        • ImageInfo
        • IntegratedClient : IntegratedEnv
        • IntegratedEnv
        • JsonUtil
        • Log
        • MathHelper
        • Matrix
        • Path
        • Random
        • Rect
        • Rigidbody
        • TextureLocation
        • TextureManager
        • Transform
        • Vector2
        • Vector3
        • Vector4
      • Game API
        • Attack
        • ArrayList<T>
        • EffectUtils
        • Entity
        • LightingUtils
        • ModNpc
        • ModProjectile
        • Npc : Entity
        • NpcUtils
        • Projectile : Entity
        • ProjectileUtils
        • Reg
        • SoundUtils
        • Utils
      • 模组API文档
        • 数据类型、枚举类型
        • JSON API
        • 引用API
        • 注册信息API
        • 语言API
        • 通用API
        • 物品API
        • 实体API
        • 特效API
        • 抛射物API
        • 状态效果API
        • 附魔API
        • 玩家API
        • NPC API
        • 骨骼模型API
        • 光照API
        • 音效API
        • 方块API
        • 方块实体API
        • 地图API
        • 渲染API
        • 指令API
        • 用户图形界面UI
        • 其他API
      • 模组开发官方教程
        • ExampleMod源代码仓库
        • 1.0 教程对应游戏版本(Indev 1.1)
        • 1.1 开始
        • 1.2 安装Visual Studio Code
        • 1.3 配置模组环境
        • 1.4 认识模组路径
        • 1.5 认识JSON数据表
        • 1.6 第一个物品
        • 1.7 认识地图元素
        • 1.8 第一个图块TODO
        • 1.9 第一个家具TODO
        • 1.10 加入合成表TODO
        • 未完待续……
      • 模组数据表文档
        • 基本JSON类型
        • 模组配置表(tcmod.json)
        • 物品表(contents/items/...)
        • 物品配置表
        • 弹药表(ammos.json)
        • 状态效果表(buffs.json)
        • 音效配置表(sound_config.json)
        • 音效表(sounds.json)
        • 背景表(backgrounds.json)
        • 皮肤表(skins.json)
        • 着色器表(shaders.json)
  • 新版教程
    • 1 基础部分
      • 1.1 安装集成开发环境
      • 1.2 获取TerraCraft源码
      • 1.3 认识Lua
      • 1.4 Mod架构
      • 1.5 游戏主生命周期和主状态机
      • 1.6 Lua实战
      • 1.7 第一个物品
      • 1.8 本地化翻译
      • 1.9 配方系统初探和矿物字典
Powered by GitBook
On this page
  • 钩子函数(抛射物脚本:contents/projectile_ai/...)
  • void Init()
  • void Update()
  • void PreUpdate()
  • void PostUpdate()
  • void OnDraw()
  • void OnKilled()
  • void ModifyHitNpc(Npc npc, Attack hitAttack)
  • void OnHitNpc(Npc npc, Attack hitAttack)
  • void ModifyHitPlayer(Player player, Attack hitAttack)
  • void OnHitPlayer(Player player, Attack hitAttack)
  • void OnTileCollide(double oldSpeedX, double oldSpeedY)
  • 抛射物通用模块(ProjectileUtils)
  • 抛射物类(Projectile Class,继承自Entity Class)
  • 父类
  • 类成员属性
  • 类成员函数

Was this helpful?

  1. 简体中文(旧版教程)
  2. 模组文档
  3. 模组API文档

抛射物API

钩子函数(抛射物脚本:contents/projectile_ai/...)

void Init()

function Init()
    
end

抛射物生成时调用一次该函数。

void Update()

function Update()
    
end

抛射物每帧运行时调用,您可以在该函数内编写运动等逻辑。

void PreUpdate()

function ReadyUpdate()
    
end

抛射物每帧运行Update()函数前调用。通常用于在使用AI重用后在原逻辑前插入新逻辑。

void PostUpdate()

function PostUpdate()
    
end

抛射物每帧运行Update()函数后调用。通常用于在使用AI重用后追加逻辑。

void OnDraw()

function OnDraw()
    
end

抛射物每帧绘制前调用,在该函数内编写自定义绘制属性。不使用该钩子函数时采取默认处理方式。

void OnKilled()

function OnKilled()
    
end

抛射物死亡时调用一次该函数。

void ModifyHitNpc(Npc npc, Attack hitAttack)

function ModifyHitNpc(npc, hitAttack)
    
end

抛射物击中Npc前调用该函数,通常用于修改hitAttack来实现攻击数据自定义。

  • npc为被击中的NPC对象。

void OnHitNpc(Npc npc, Attack hitAttack)

function OnHitNpc(npc, hitAttack)
    
end

抛射物击中Npc时调用该函数。

  • npc为被击中的NPC对象。

  • hitAttack为攻击属性。

void ModifyHitPlayer(Player player, Attack hitAttack)

function ModifyHitPlayer(player, hitAttack)
    
end

抛射物击中玩家前调用该函数,通常用于修改hitAttack来实现攻击数据自定义。

  • player为被击中的玩家对象。

  • hitAttack为攻击属性。

void OnHitPlayer(Player player, Attack hitAttack)

function OnHitPlayer(player, hitAttack)
    
end

抛射物击中玩家时调用该函数。

  • player为被击中的玩家对象。

  • hitAttack为攻击属性。

void OnTileCollide(double oldSpeedX, double oldSpeedY)

function OnTileCollide()
    
end

抛射物击中实心图块时调用该函数。

  • oldSpeedX和oldSpeedY表示击中实心图块前一帧的横向和纵向速度。

抛射物通用模块(ProjectileUtils)

函数

返回值

描述

ProjectileUtils.Create(int id, double centerX, double centerY, double speedX = 0.0, double speedY = 0.0, Attack attack = Attack:new(0, 0, 0))

Projectile

创建一个抛射物实体,返回创建好的抛射物实体。 id:抛射物ID。centerX和centerY:创建抛射物的中心点。speedX和speedY:初始运动速度。Attack:抛射物的基础攻击力。

ProjectileUtils.CreateFromPlayer(Player playerOwner, int id, double centerX, double centerY, double speedX = 0.0, double speedY = 0.0, Attack attack = Attack:new(0, 0, 0))

Projectile

创建一个以指定玩家为拥有者的抛射物实体,返回创建好的抛射物实体。

ProjectileUtils.CreateFromNpc(Npc npcOwner, int id, double centerX, double centerY, double speedX = 0.0, double speedY = 0.0, Attack attack = Attack:new(0, 0, 0))

Projectile

创建一个以指定NPC为拥有者的抛射物实体,返回创建好的抛射物实体。

ProjectileUtils.SearchByRect(double x, double y, int width, int height)

ArrayList<Projectile>

返回包含于指定矩形区域内部的所有抛射物列表。

ProjectileUtils.SearchByCircle(double centerX, double centerY, int radius)

ArrayList<Projectile>

返回包含于指定圆形区域内部的所有抛射物列表。

ProjectileUtils.SearchNearestProjectile(double centerX, double centerY, int radius, bool noCrossTiles = false)

Projectile/nil

搜索在指定圆形区域内部距离圆心最近的抛射物,返回该抛射物。若结果不存在,返回nil。noCrossTiles表示是否排除中心到圆心的连线被图格遮挡的抛射物。

抛射物类(Projectile Class,继承自Entity Class)

抛射物(Projectile)类表示具有抛射物基本信息的实体类。通常用于表示弓箭、子弹、弹幕等实体对象。

在编写抛射物AI脚本时,self表示当前正在操作的抛射物类。

父类

类成员属性

属性

类型

描述

Projectile.id

int

【只读】当前抛射物的动态ID。

Projectile.baseAttack

Attack

当前抛射物的基础攻击属性。一般由创建时给定。

Projectile.targetTime

int

当前抛射物的目标时间。一般由创建时给定,通常用于实现达到目标时间后触发相关逻辑。

Projectile.isCheckNpc

bool

当前抛射物是否作用于NPC。一般由创建时指定,默认为false,决定是否碰撞、伤害NPC。

Projectile.isCheckPlayer

bool

当前抛射物是否作用于玩家。一般由创建时指定,默认为false,决定是否碰撞、伤害玩家。

Projectile.maxSpeed

double

【只读】当前抛射物最大移动速度。

Projectile.hots[4]

Point

【只读】当前抛射物的热固定点。允许读取最多4个热固定点。

Projectile.state

int

抛射物当前在简单有限状态机中的状态。

Projectile.stateTimer

int

抛射物的状态机计时器。

Projectile.modData

ExData

抛射物当前模组自定义模组数据。

类成员函数

函数

返回值

描述

Projectile:Kill()

void

清除当前抛射物对象。

Projectile:GetPlayerOwner()

Player/nil

若当前抛射物的玩家拥有者存在且存活,返回该玩家对象,否则返回nil。

Projectile:GetNpcOwner()

Npc/nil

若当前抛射物的NPC拥有者存在且存活,返回该NPC对象,否则返回nil。

Projectile:GetPlayerTarget()

Player/nil

若当前抛射物的玩家锁定目标存在且存活,返回该玩家对象,否则返回nil。

Projectile:GetNpcTarget()

Npc/nil

若当前抛射物的NPC锁定目标存在且存活,返回该NPC对象,否则返回nil。

Projectile:SetPlayerTarget(Player player)

void

设定当前抛射物的玩家锁定目标。

Projectile:SetNpcTarget(Npc npc)

void

设定当前抛射物的NPC锁定目标。

Previous特效APINext状态效果API

Last updated 4 years ago

Was this helpful?

hitAttack为攻击属性(见)。

该类的父类为。可直接使用该父类的类成员属性与类成员函数。

Attack数据类型
Entity类