但是我需要能够触发多次,只是不要一次触发两次而已
时间: 2024-03-08 20:50:52 浏览: 131
如果你需要允许触发多次,但是不希望在同一帧中触发两次,可以在 `OnTriggerEnter2D` 函数中添加一个判断条件,检查这个攻击是否在同一帧中已经触发过了。具体来说,可以使用 Unity 引擎提供的 `Time` 类来记录上一次触发的时间戳,然后在下一次触发时,判断时间间隔是否足够长,如果足够长,则进行伤害处理和拳意增加,并更新时间戳。
下面是修改后的代码示例:
```csharp
public class Attack : MonoBehaviour {
public float damage;
public int quanYi = 0;
private float lastTriggerTime = 0f;
private void OnTriggerEnter2D(Collider2D collision)
{
float currentTime = Time.time;
if (currentTime - lastTriggerTime < 0.1f) return; // 避免同一帧中触发两次
if (collision.gameObject.CompareTag("Enemy"))
{
Debug.Log("打中啦");
//造成伤害并增加拳意
if (quanYi <= 6)
{
quanYi++;
}
lastTriggerTime = currentTime; // 更新时间戳
}
}
}
```
在这个代码中,我使用了一个 0.1 秒的时间间隔作为判断条件,你可以根据实际情况调整这个值。如果你需要在同一帧中触发两次及以上,只是不希望触发两次伤害和拳意增加,可以在判断条件中仅仅跳过这些处理,而不是直接退出函数。
阅读全文