在 AGM 中实现激光武器:RayCast2D 与 Line2D 的代码联动方法

大家好,我目前正在尝试实现激光武器的效果,但在 AGM 手法下面临一些课题,希望能得到各位的建议。
目前的尝试方法
PGM 侧的实现
用透明对象增加碰撞框 X 轴比例作为命中判定。
与敌人或墙壁碰撞时获取接触比例,并将该值反映到对象的 X 比例缩放中。

AGM 侧的实现

使用 RayCast2D 节点进行碰撞判定,通过 Line2D 节点绘制可视化的光束。
需要通过代码实现节点间的联动,但目前未能成功实现。

面临的问题
AGM 侧:无法理解 RayCast2D 与 Line2D 的联动代码,光束绘制位置无法正确呈现。

提问内容
能否提供 AGM 中 RayCast2D 与 Line2D 联动的代码示例?

恳请各位给予建议!

//

皆さん、こんにちは。レーザー武器のエフェクト実装中に AGM 手法の課題に直面しています。ご助言をいただければ幸いです。

現在の取り組み方法

PGM 側の実装

  • 透明オブジェクトで当たり判定の X 軸サイズを拡大
  • 敵 / 壁との衝突時に接触割合を取得し、オブジェクトの X 軸スケールに反映

AGM 側の実装

  • RayCast2D で衝突判定を行い、Line2D で視覚的な光線を描画
  • ノード間のコード連携が必要だが、うまく実装できていない

直面している問題

AGM 側:RayCast2D と Line2D の連携コードが理解できず、光線の描画位置が正しく表示されない

質問内容

AGM で RayCast2D と Line2D を連携させるコード例を教えていただけますか?

宜しくお願いいたします。

//

Hello everyone, I’m facing issues with AGM approach while implementing laser weapon effects. Your advice is highly appreciated.

Current Attempts

PGM Implementation

  • Using transparent objects to expand collision box X-axis size for hit detection
  • Acquiring contact ratio on enemy/wall collision and reflecting it to object’s X-axis scale

AGM Implementation

  • Using RayCast2D for collision detection and Line2D for visual beam rendering
  • Struggling to implement code linkage between nodes

Issue Faced

AGM side: Can’t understand how to link RayCast2D with Line2D code, beam rendering position is incorrect

Question

Could you provide a code example for linking RayCast2D and Line2D in AGM?

Thank you in advance for your help!

1 个赞

您是否查看过高级示例:横向卷轴鼠标射击游戏?
由 LineManager.gd 控制的钩索链,或许能实现您想要的功能?

1 个赞

你好!我在动画中制作了一个近似激光子弹的关键帧效果。步骤是使用两个关键帧来控制中心右侧对象的 X 轴缩放。当对象撞击或与墙壁碰撞时,它会切换到下一个动作。下一个动画设置为循环,且 X 轴缩放将继承前一个动画的值。

现在运行得更好了吗?
为了更好地连接节点,Godot 使用称为“信号(signals)”的机制在节点之间传递数据。
AGM 也通过视觉脚本中的 EmitSignal 动作支持信号。
它们的使用稍微有些复杂,但通过参考示例钩索链并结合信号的使用,您应该能够实现您想要的交互效果。

如果您需要更多建议,我需要了解您希望制作但目前在 AGM 中无法实现的动画效果类型。提供视觉示例(例如来自旧游戏的)会很有帮助。

我只是想做一个简单的横版卷轴动作游戏喵~。激光武器打算按直线正常使用喵~。现在困扰我的是伤害数值的显示喵~。非常感谢官方的建议喵~!明天我打算尝试用“信号(signals)”来显示伤害数值喵~!

我只想制作一个简单的横版动作游戏喵~。激光武器通常计划以直线方式使用喵~。现在让我困扰的是伤害数值的显示问题喵~。非常感谢官方的建议喵~!明天,我打算尝试使用“信号”来显示伤害数值喵~!

1 个赞