所以我需要在另一个游戏对象的顶部获得一个随机位置的Vector3。该游戏对象将始终为矩形,但在整个尺寸上可能会有所不同(游戏中的其他对象也会有所不同,可能需要使用相同的功能)。
由于大小会变化,所以我不能依靠使用我之前输入的数字来进行编码,而需要编写一些会生成随机Transform.Transmotion的位置。
如果有人有任何建议,我将不胜感激!
答案 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);
}
}