【问题标题】:Spawn prefab randomly over polygon collider 2d in Unity在 Unity 中的 2d 多边形对撞机上随机生成预制件
【发布时间】:2021-02-27 12:57:56
【问题描述】:

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

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

我希望那个小圆圈在多边形对撞机上随机生成。

我尝试过这样的事情:

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% 的情况下是好的结果,但有时会变得很奇怪,如下所示:

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

【问题讨论】:

    标签: unity3d 2d 2d-games collider prefab


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复。我查看了链接,但我无法根据该答案进行操作。我不太明白。我知道球在界内和所有这些东西,但我不明白如何解决它。抱歉,我是 Unity 的新手。
    • 很高兴有帮助。通过光线投射,您可以检查确定的点是否在您的形状内。 here 还有另一个很好的资源。一旦您了解了为什么您当前的方法不起作用,您就可以继续研究另一种可能有效的方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多