unity3d 检测精灵的GameObject的完全重叠

lvmkulzt  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(305)

因此,我有一个预制件,我从资源文件夹中随机示例化,随机位置如下,目前只是一个附带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[]


有人停了!说真的,我已经试着这么做好几天了。

  • 谢谢你-谢谢
bgibtngc

bgibtngc1#

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

n1bvdmb6

n1bvdmb62#

下面你会发现我的代码为统一,以验证如果对象重叠之前,示例化他们在游戏中。
在你使用下面的代码之前,请检查你是否在为你的对象设置的IsOverlappingExistingGameObjects方法中使用了正确的碰撞器。我使用的是PolygonCollider 2D。
[![在此处输入图像描述][1]][1]

var objectCollider = gameObjectToCheck.GetComponent<PolygonCollider2D>();

个字符

相关问题