unity3d 随机范围内生成怪物

using UnityEngine;
using System.Collections;


public class BarrackManager : MonoBehaviour {
	public Transform[] address;
	public GameObject[] prefabs;


	// Use this for initialization
	void Start () {
		InvokeRepeating ("setBarrack",1,3f);
	}
	
	// Update is called once per frame
	void Update () {
		
	}




	void setBarrack(){
		Transform tf = address [Random.Range (0, address.Length)];
		Bound bound = getBound (tf);
		Vector3 pos = new Vector3 (bound.getRandomX(),bound.y,bound.getRandomZ());
		Instantiate (prefabs[0],pos,Quaternion.identity);
	}


	Bound getBound(Transform tf){
		Vector3 center = tf.collider.bounds.center;
		Vector3 extents = tf.collider.bounds.extents;
		Vector3 dL = new Vector3 (center.x - extents.x,center.y,center.z - extents.z);
		Vector3 dR = new Vector3 (center.x + extents.x,center.y,center.z - extents.z);
		Vector3 sR = new Vector3 (center.x + extents.x,center.y,center.z + extents.z);
		Vector3 sL = new Vector3 (center.x - extents.x,center.y,center.z + extents.z);
		Bound bound = new Bound (dL,dR,sR,sL,center.y);


		return bound;
	}


	class Bound{
		public Vector3 dL;
		public Vector3 dR;
		public Vector3 sR;
		public Vector3 sL;
		public float y;


		public Bound(Vector3 dL,Vector3 dR, Vector3 sR, Vector3 sL,float y){
			this.dL = dL;
			this.dR = dR;
			this.sR = sR;
			this.sL = sL;
			this.y = y;
		}




		public float getRandomX(){
			float num = Random.Range (dL.x,dR.x);
			return num;
		}


		public float getRandomZ(){
			float num = Random.Range (dL.z,sL.z);
			return num;
		}






	}
	
}

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值