如何在另一个gameObject顶部某处获得随机位置的vector3?

时间:2019-08-25 14:39:06

标签: unity3d

所以我需要在另一个游戏对象的顶部获得一个随机位置的Vector3。该游戏对象将始终为矩形,但在整个尺寸上可能会有所不同(游戏中的其他对象也会有所不同,可能需要使用相同的功能)。

由于大小会变化,所以我不能依靠使用我之前输入的数字来进行编码,而需要编写一些会生成随机Transform.Transmotion的位置。

如果有人有任何建议,我将不胜感激!

1 个答案:

答案 0 :(得分:0)

您可以使用网格边界来限制随机生成器的范围。如果要将点用于下面的对象的子对象,还需要将其转换为世界空间。

using UnityEngine;

public class GetRandomPos : MonoBehaviour {
    private Mesh mesh;
    public float y_amount = 1;

    private void Awake()
    {
        mesh = GetComponent<MeshFilter>().mesh;
    }

    public Vector3 GetRandomPointAbove()
    {
        float minx = mesh.bounds.min.x;
        float minz = mesh.bounds.min.z;
        float maxx = mesh.bounds.max.x;
        float maxz = mesh.bounds.max.z;
        float x = Random.Range(minx, maxx);
        float y = y_amount;
        float z = Random.Range(minz, maxz);
        var localPos = new Vector3(x, y, z);
        return transform.TransformPoint(localPos);
    }
}