做的是一个箱子击碎的效果,结构如下:
Box是完整的箱子,BoxPieces是箱子的碎片。
实现方法:
public int BoxHealth;//箱子耐久
public GameObject BoxPieces;//箱子碎片父对象
private Rigidbody2D[] Pieces;//箱子碎片组
void Start()
{
Pieces = BoxPieces.GetComponentsInChildren<Rigidbody2D>();
}
这里用gameobject.GetComponentsInChildren<Rigidbody2D>()取Boxpieces中箱子碎片的Rigidbody2D,因为是数组,所以取到的是所有的RigidBody2D
void BoxBreak()
{
if (BoxHealth == 0)
{
this.gameObject.SetActive(false);
BoxPieces.SetActive(true);
foreach (Rigidbody2D rb in Pieces)
{
float x = Random.Range(2f, 5f);
float y = Random.Range(2f, 5f);
rb.velocity = new Vector2(x, y);
}
}
}
箱子每次受击耐久减一(这个可以用OnTriggerEnter2D检测武器攻击),到BoxHealth归零,完整物体消失,激活箱子碎片这个对象,然后给每个箱子碎片一个随机的力,碎片飞出