在 Unity 中的多边形对撞机 2d 上随机生成预制件

Spawn prefab randomly over polygon collider 2d in Unity

我在这个游戏对象上附加了 pollygon collider 2d。

这个游戏对象是另一个游戏对象的父对象(只是一个小圆圈)。

我想让那个小圆圈在 pollygon collider 的某个地方随机生成。

我试过这样的事情:

private void GetBounds()
{
    polygonCollider = transform.parent.gameObject.GetComponent<PolygonCollider2D>();
    bounds = polygonCollider.bounds;
    
}

public void TargetSetPosition()
{
    x = Random.Range(bounds.min.x, bounds.max.x);
    y = Random.Range(bounds.min.y, bounds.max.y);

    transform.localPosition = new Vector2(x, y);
}
private void Start()
{
    GetBounds();
    TargetSetPosition();
}

这个脚本附在那个小圆圈上。在 80% 的情况下是好的结果,但有时它会变得奇怪,像这样:

谁能帮帮我,因为我几乎什么都试过了。

bounds = polygonCollider.bounds 正在获取 bounding box 的边界。所以在你的第二张照片中,球在界内。

要使其位于对象的对撞机内,您需要尝试其他方法,例如 this