public class Attack : MonoBehaviour { public float damage; public int quanYi=0; private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.CompareTag("Enemy")) { Debug.Log("打中啦"); //造成伤害并增加拳意 if (quanYi <= 6) { quanYi++; } } } }防止多次触发
时间: 2024-02-10 21:10:22 浏览: 108
Unity_API.pdf
在这个代码中,可以使用一个 bool 类型的变量来标记这个攻击是否已经被触发过。具体来说,可以在 `Attack` 类中添加一个私有的 bool 类型的变量,例如 `isTriggered`,并在 `OnTriggerEnter2D` 函数中添加一些逻辑,以检查这个变量的值。如果它为 false,则进行伤害处理和拳意增加,并将 `isTriggered` 设置为 true,以标记这个攻击已经被触发过了。如果它为 true,就直接退出函数,避免多次触发。
下面是修改后的代码示例:
```csharp
public class Attack : MonoBehaviour {
public float damage;
public int quanYi = 0;
private bool isTriggered = false;
private void OnTriggerEnter2D(Collider2D collision)
{
if (isTriggered) return; // 避免多次触发
if (collision.gameObject.CompareTag("Enemy"))
{
Debug.Log("打中啦");
//造成伤害并增加拳意
if (quanYi <= 6)
{
quanYi++;
}
isTriggered = true; // 标记为已触发
}
}
}
```
阅读全文