检测 Sprite 的 GameObject 的完全重叠
Detect complete overlap of GameObject of Sprite
所以我有一个预制件,我在随机位置从资源文件夹中随机实例化,如下所示,目前它只是一个附加了 Sprite Renderer 的图像:
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 是这里的关键字,我尝试了很多方法,包括尝试检测预制件渲染器和球的 rigidBody2D 之间的重叠,但都无济于事。我什至尝试过抓取场景中的所有预制件,将它们放入数组并通过在每次更新中遍历所有数组来检测重叠,但它不起作用:
GameObject[] prefab =GameObject.FindGameObjectsWithTag("enemies"); //returns GameObject[]
有人停下来了!说真的,我已经尝试了好几天了。
谢谢。
尝试使用Physics2D.OverlapCircle to detect overlaps. Another option worth checking out is: Physics2D.OverlapArea. If these two options only provides a partial solution, try using Physics2D.OverlapPoint检查多个点,要求每个点重叠;例如,如果球要完全位于一个正方形内,请检查该正方形内的四个点是否重叠。
所以我有一个预制件,我在随机位置从资源文件夹中随机实例化,如下所示,目前它只是一个附加了 Sprite Renderer 的图像:
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 是这里的关键字,我尝试了很多方法,包括尝试检测预制件渲染器和球的 rigidBody2D 之间的重叠,但都无济于事。我什至尝试过抓取场景中的所有预制件,将它们放入数组并通过在每次更新中遍历所有数组来检测重叠,但它不起作用:
GameObject[] prefab =GameObject.FindGameObjectsWithTag("enemies"); //returns GameObject[]
有人停下来了!说真的,我已经尝试了好几天了。
谢谢。
尝试使用Physics2D.OverlapCircle to detect overlaps. Another option worth checking out is: Physics2D.OverlapArea. If these two options only provides a partial solution, try using Physics2D.OverlapPoint检查多个点,要求每个点重叠;例如,如果球要完全位于一个正方形内,请检查该正方形内的四个点是否重叠。