我希望当两个球体(预制件)相遇时它们会消失并形成一个正方形,但形成了 2 个
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class circle : MonoBehaviour
{
public GameObject square;
Vector3 pos;
void Start()
{
}
void Update()
{
}
void OnCollisionEnter2D(Collision2D collision) {
if(collision.gameObject.name == this.gameObject.name) {
pos = transform.position;
Destroy(gameObject);
Instantiate(square, pos, Quaternion.identity);
}
}
}
我尝试使用 for 和 while 循环以及变量,但我无法让它工作
生成 2 个方块的原因是因为两个对象都生成了该方块。
要解决此问题,请向类添加一个布尔值以指示合并是否已发生。
在合并之前,检查该布尔值以查看合并是否已被处理。
如果尚未合并,请将 merged 设置为 true 并销毁两个对象。
public class Circle : MonoBehaviour
{
private bool isMerged;
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.TryGetComponent<Circle>(out var otherCircle) &&
collision.gameObject.name == this.gameObject.name &&
otherCircle.isMerged == false)
{
isMerged = true;
Instantiate(square, transform.position, Quaternion.identity);
Destroy(gameObject);
Destroy(collision.gameObject);
}
}
}