Unity3d 在Unity中的多边形碰撞器2d上随机生成预设

Unity3d 在Unity中的多边形碰撞器2d上随机生成预设,unity3d,2d,2d-games,collider,prefab,Unity3d,2d,2d Games,Collider,Prefab,我已经在这个游戏物体上附加了pollygon collider 2d 这个游戏对象是另一个游戏对象的父对象(只是一个小圆圈) 我希望这个小圆圈在pollygon对撞机上随机生成somwhere。 我试过这样的方法: private void GetBounds() { polygonCollider = transform.parent.gameObject.GetComponent<PolygonCollider2D>(); bounds = polygonCol

我已经在这个游戏物体上附加了pollygon collider 2d

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

我希望这个小圆圈在pollygon对撞机上随机生成somwhere。

我试过这样的方法:

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();
}
private void GetBounds()
{
polygonCollider=transform.parent.gameObject.GetComponent();
bounds=PolygonCallider.bounds;
}
公共无效TargetSetPosition()
{
x=随机范围(bounds.min.x,bounds.max.x);
y=随机范围(bounds.min.y,bounds.max.y);
transform.localPosition=新向量2(x,y);
}
私有void Start()
{
GetBounds();
TargetSetPosition();
}
此脚本附加到该小圆圈。在80%的情况下,这是一个好结果,但有时会出现类似这样的奇怪情况:


有人能帮帮我吗,因为我几乎什么都试过了。

bounds=PolygonCallider.bounds得到了。在你的第二张照片中,球在界内


要使其位于对象的碰撞器内,您需要尝试其他方法,如

谢谢您的回答。我看了链接,但我不能根据这个答案来做。我不太明白。我知道球在界内以及所有这些东西,但我不知道如何固定它。对不起,我是Unity的新手。很高兴这有帮助。使用光线投射,您可以检查确定的点是否在形状内。还有一个很好的资源。一旦您了解了当前方法不起作用的原因,您可以继续研究另一种可能起作用的方法