【技术讨论】伤害数值显示系统的最优实现方案探讨

中文原文

请问我该如何制作一个伤害显示文本?
我目前的实现流程是:

  1. 子弹 / 伤害框攻击到对方受击框
  2. 锁定目标对象
  3. 计算伤害值并存储在变量中
  4. 生成子对象(伤害文本)
  5. 子对象继承伤害值并显示

请问是否有更优方案或 AGM 自带的节点可以简化这个流程?

//

English Translation

Title: [Technical Discussion] Optimal Solutions for Damage Number Display System

Description:
I’m currently implementing a damage display system with the following workflow:

  1. Projectile/damage box collides with target’s hitbox
  2. Lock onto the target object
  3. Calculate damage and store in a variable
  4. Spawn a child object (damage text)
  5. Child object inherits damage value and displays it

Is there a more efficient way or built-in AGM nodes that can simplify this process?

//

日本語訳

タイトル: 【技術討論】ダメージ数値表示システムの最適化に関する考察

説明:
現在、以下の流れでダメージ表示システムを実装しています:

  1. 弾丸 / ダメージ判定が敵の当たり判定と接触
  2. 対象オブジェクトをロック
  3. ダメージ値を計算し変数に格納
  4. 子オブジェクト(ダメージテキスト)を生成
  5. 子オブジェクトがダメージ値を受け取り表示

このプロセスを簡素化する AGM プラグインの組み込みノードや、より効率的な実装方法はありますか?

新问题:AGM 中无法锁定通用变量,只能锁定单一对象的变量;而在 PGM(Pixel Game Maker MV)中,只要存在对应的变量条目,即可锁定并修改变量。

//
[工具问题] AGM 与 PGM MV 中的变量锁定限制

AGM 的限制:

只能锁定特定于单个对象的变量,无法锁定通用变量类型。

PGM(Pixel Game Maker MV)的功能:

可通过引用变量条目名称来全局锁定和修改变量,无需依赖特定对象。

//

[工具问题] AGM 与 PGM MV 中的变量锁定功能差异

AGM(ACT Game Maker)的限制:

仅能锁定特定于单个对象的变量,无法锁定通用变量类型。

PGM(Pixel Game Maker MV)的功能:

只需引用变量条目名称,即可全局锁定和修改变量(不依赖于具体对象)。

如果将伤害计算处理委托给 AGM 的基本处理,那么“VariableSettings”节点中拥有的“taken_damage”变量会非常有用。
该变量会在受到伤害时自动存储伤害数值。

利用这一点,子对象(伤害数值对象)可以引用父对象(受到伤害的对象)的“taken_damage”变量,从而继承伤害数值。
由于子对象只是单向引用父对象的数值,这在一定程度上可能更为高效。

不过,如果子对象在引用父对象的“taken_damage”之前又受到了其他伤害,那么“taken_damage”中就会存入其他攻击的数值,导致引用错误,因此如何控制这一时间差可能是一个需要注意的点。
通常情况下,无敌时间可以解决这一问题。

按照这种变量的用法,子对象只能对应一对一的父对象
例如,如果创建了用于显示伤害的 UI,就无法实现“统一显示所有对象的伤害”这样的机制。

相比之下,Pixel Game Maker MV 的变量系统作为类似数据库的全局变量运行。
只要变量名一致,就可以跨对象以一对多的方式共享和修改值,因此没有像 AGM 那样的限制,能够实现灵活的联动,这是两者的一大区别。

确实如此。这是个问题……

换了一种方式喵!
已切换为“在受到伤害时生成对象并显示伤害数值”的方式,后续表现将观察而定。

1.0.7 补丁更新后,\n现在也可以引用“非指定文件路径的父对象变量”了!\n(详细规格请查看补丁公告)\n\n感谢 AGM 运营团队的周到考虑!

非常感谢!!!
Thank you very much!!!

1 个赞