产生这种原因是这个对象上有多个碰撞器,可能会多个碰撞器同时触发,以至于触发函数运行多次,解决这个问题,我们可以将触发函的运行内容设置为给一个布尔类型赋值,这样不论返回几次,返回ture便能进行之后的运算,最后再置为false:
例如:
修改前:
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == "Collection1")
{
Destroy(collision.gameObject);
Cherry += 1;
CherryNum.text = Cherry.ToString();
}
修改后:
bool istouch = false
private void OnTriggerEnter2D(Collider2D collision)
{
istouch = true
}
if(istouch = true)
{
Destroy(collision.gameObject);
Cherry += 1;
CherryNum.text = Cherry.ToString();
istouch= false
}