因此,我有一个预制件,我从资源文件夹中随机示例化,随机位置如下,目前只是一个附带Sprite Renderer的图像:
go = (GameObject)Instantiate(Resources.Load("alienPink"));
字符串
每隔3秒在不同位置示例化这些。
我也有一个球与精灵渲染器,圆形碰撞器2D和一个刚体2D附加到它,我可以访问刚体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是这里的关键字,我已经尝试了许多方法,包括尝试检测预制件的渲染器和球的rigidBody 2D之间的重叠,但都无济于事。我甚至尝试过抓取场景中的所有预制件,将它们放入一个数组中,并通过在每次更新中遍历所有数组来检测重叠,但它就是不起作用:
GameObject[] prefab =GameObject.FindGameObjectsWithTag("enemies"); //returns GameObject[]
型
有人停了!说真的,我已经试着这么做好几天了。
- 谢谢你-谢谢
2条答案
按热度按时间bgibtngc1#
尝试使用Physics2D.OverlapCircle来检测重叠。另一个值得一看的选择是:Physics2D.OverlapArea,如果这两个选项只提供了部分解决方案,请尝试使用Physics2D.OverlapPoint,检查多个点,以便每个点都需要重叠;例如,如果球要完全在正方形内,则检查该正方形内的四个点是否重叠。
n1bvdmb62#
下面你会发现我的代码为统一,以验证如果对象重叠之前,示例化他们在游戏中。
在你使用下面的代码之前,请检查你是否在为你的对象设置的
IsOverlappingExistingGameObjects
方法中使用了正确的碰撞器。我使用的是PolygonCollider 2D。[![在此处输入图像描述][1]][1]
个字符