GameObject goClone=GameObject.Instantiate(goPerfab)
goClone.GetComponent<Transform>().localScale=new Vector3(2, 2, 2)
我写的只是一个实例,可以参考参考,并不是绝对的哦,遇到特殊情况要做特别分析。
如果对楼主有帮助,给个采纳好不,谢谢啦首先,在场景中添加一个Cube,添加为预制件。
创建一个脚本,在脚本中写入下面的代码:
using UnityEngine
using System.Collections
using System.Collections.Generic
public class qianjing : MonoBehaviour
{
public Transform prefab//定义预制件
public Vector3 onepos//定义起始位置
public Vector3 nextpos//定义下一个位置
public int num//数量
public Vector3 minsize//最小范围
public Vector3 maxsize//最大范围
Queue<Transform>queues//队列
public float distance
void Start()
{
queues = new Queue<Transform>(num)//实例化队列
for (int i = 1i <numi++)
{
Transform trans = GameObject.Instantiate(prefab)//实例化预制件
queues.Enqueue(trans)//将预制件添加至队列
}
nextpos = onepos//起始位置 = 下一位置
for (int i = 1i <numi++)
{
Keep()
}
}
void Update()
{
if (Run.distances - queues.Peek().position.x >= distance)//物体移动距离与预制件长度的差
{
Keep()
}
}
/// <summary>
/// 预制件排列
/// </summary>
private void Keep()
{
//(预制件)随机大小
Vector3 ban = new Vector3(Random.Range(minsize.x, maxsize.x), Random.Range(minsize.y, maxsize.y), Random.Range(minsize.z, maxsize.z))
Transform trans = queues.Dequeue()//暂时移除(预制件)
Vector3 poss = nextpos//获取下一个预制件
poss.y += ban.y * 0.5f//预制件在Y轴方向上移预制件的一半距离
poss.x += ban.x * 0.5f//预制件在X轴方向右移预制件的一半距离
trans.localScale = ban//重新生成随机预制件
trans.position = poss//获取下一个预制件位置
nextpos.x += ban.x// 预制件在X轴方向右移(前)预制件大小的距离
queues.Enqueue(trans)//添加队列中
}
}返回场景,创建一个空游戏体,将脚本挂载在空游戏体上
点击运行,在游戏窗口就可以看到随机产生的游戏路径。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)