在 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
我在这个游戏对象上附加了 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