戈多4。如何仅通过第一次迭代来检测碰撞

问题描述 投票:0回答:1

我在GodotEngine中遇到以下问题:如何在Node2D进入树时仅在第一次迭代中检测碰撞?

我在我的游戏中使用的是 Area2D,它是💥“爆炸”,只有当它出现在屏幕中时,它才必须检测一次碰撞。接下来是持续 0.3 秒的爆炸动画及其消失,在此期间它应该不会检测到碰撞。

首先想到的是启动一个定时器,定时器到期后,将监控参数更改为 false。但是对于 0.05s 的计时器,这不能完美工作,而对于小于 0.05s 的计时器,它不能正常工作。这就是为什么它不适合我。

Godot 中是否有解决此问题的方法,以便当对象出现在树中时精确地搜索碰撞 1 次迭代?

2d collision-detection collision godot godot4
1个回答
0
投票

我不太清楚你的意思是只有1次进入树,所以我会给出三种可能的解决方案。

  1. 您是否尝试过使用物理过程函数而不是计时器?您可以在第一次调用 process 函数后将监视设置为 false。然后你可以保证它在物理过程中被准确地调用 1 次。
  2. 如果您希望仅在 1 次碰撞时调用它,您可以在 on_body_entered 函数上将监视功能设置为关闭。
  3. 在ready函数中,您可以使用get_overlapping_areas(或get_overlapping_bodies)函数,然后禁用接触监控。
© www.soinside.com 2019 - 2024. All rights reserved.