检测Sprite的GameObject的完全重叠

时间:2015-05-19 17:12:15

标签: c# unity3d sprite unityscript unity3d-2dtools

所以我有一个预制件,我在随机位置随机地从资源文件夹中实例化如下,并且只是一个附有Sprite渲染器的图像:

go = (GameObject)Instantiate(Resources.Load("alienPink")); 

这些在每3秒后在不同位置实例化。

我还有一个带有Sprite Renderer,Circle Collider 2d和一个Rigid Body 2D的球,我可以按如下方式访问RigidBody 2D:

//ray cast from camera to mouse point to detect hit

RaycastHit2D hit = Physics2D.Raycast(mousePos2D , dir);

. . .

RigidBody2D grabbedObject = hit.collider.rigidbody2D;

//do stuff with grabbedObject including change position

我想检测预制件是否完全由透明球重叠,这样我就可以开始对预制件进行操作了。 COMPLETE是这里的关键字,我尝试了很多方法,包括尝试检测预制件的渲染器和球的刚体2D之间的重叠,但无济于事。我甚至尝试抓住场景中的所有预制件,将它们放入一个阵列中并通过在每次更新中遍历所有阵列来检测重叠但是它不起作用:

GameObject[] prefab =GameObject.FindGameObjectsWithTag("enemies");  //returns GameObject[]

SOMEBODY HALP!说真的,我一直试图这样做几天。

谢谢。

1 个答案:

答案 0 :(得分:1)

尝试使用Physics2D.OverlapCircle检测重叠。值得一试的另一个选择是:Physics2D.OverlapArea。如果这两个选项仅提供部分解决方案,请尝试使用Physics2D.OverlapPoint检查多个点,以便每个点都需要重叠;例如,如果球完全在方形内,则检查该方格内四个点的重叠。