本文章由cartzhang編寫,轉載請注明出處。 所有權利保留。
文章鏈接:?http://blog.csdn.net/cartzhang/article/details/47337029
作者:cartzhang
對與U3D ?AI,看了下,自己做了小功能,以備后用啊!
### 一,在某區域隨機產生某個對象
C# 文件名稱為RadomAPoint.cs
~~~
using UnityEngine;
using System.Collections;
public class RadomAPoint : MonoBehaviour {
public GameObject mObjArea; // 隨機區域
public GameObject prefabObj; // 對象prefab
public string mytag; // 對象標簽
public string targetTag; // 目標對象標簽
public int ObjectNumber; // 場景中整體prefab 個數。
private Bounds mbouds;
private Vector3 tmp;
// Use this for initialization
void Start () {
mbouds = mObjArea.GetComponent<Collider>().bounds;
InvokeRepeating("NewPrefabInstance", 1, 5);//1秒后調用LaunchProjectile () 函數,之后每5秒調用一次
}
// Update is called once per frame
void Update () {
}
void NewPrefabInstance()
{
GameObject[] root = GameObject.FindGameObjectsWithTag(mytag);
if (root.Length <= ObjectNumber)
{
Vector3 randomPos = RadomVector3(mbouds.min, mbouds.max);
//GameObject tmpGameObj = Resources.Load(prefabName) as GameObject;
//tmpGameObj.transform.position = randomPos;
Quaternion q = Quaternion.identity;
GameObject tmpGameObj = GameObject.Instantiate(prefabObj, randomPos, q) as GameObject;
tmpGameObj.GetComponent<AIBehaviourScript>().TargetObject = GameObject.FindWithTag(targetTag).transform;
}
}
Vector3 RadomVector3(Vector3 min, Vector3 max)
{
tmp.x = Random.Range(min.x, max.x);
tmp.y= Random.Range(min.y, max.y);
return tmp;
}
}
~~~
### 二、自己做了個prefab,添加了自動找到目標的功能。
特別簡單的代碼:
~~~
using UnityEngine;
using System.Collections;
public class AIBehaviourScript : MonoBehaviour
{
public Transform TargetObject = null;
void Start()
{
if (TargetObject != null)
{
GetComponent<NavMeshAgent>().destination = TargetObject.position;
}
}
void Update()
{
}
}
~~~
### 三,遇到目標后,自動銷毀
代碼:
~~~
using UnityEngine;
using System.Collections;
public class BoxCollisionDestory : MonoBehaviour
{
public string tagName;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == tagName)
{
GameObject.Destroy(other.gameObject);
}
}
}
~~~
### 四,說明
這個過程中,要設置目標點為的屬性如下:

而prefab對象也需要給它一個rigidbody,否則他們的碰撞不起作用。

基本上做了一個能隨機位置產生一個對象,然后對象自動尋找目的,到達目的地的小功能!
---------
若有問題,請隨時聯系!
非常感謝!!
- 前言
- Unity隨機Prefab,自動前往某點處理
- Unity導入FBX自動進行動畫切分
- Unity5中的粒子縮放(附測試源碼)
- Unity和虛幻的比較
- Unity 實現Log實時輸出到屏幕或控制臺上&lt;一&gt;
- Unity 實現Log實時輸出到屏幕或控制臺上&lt;二&gt;
- Unity的Json解析<一>--讀取Json文件
- Unity的Json解析<二>–寫Json文件
- Unity 的OCulus VR開發遇到的坑---OC版本差異
- Unity中一鍵創建常用文件夾
- Unity版本與虛擬現實頭盔Deepoon大朋版本測試
- Unity 多場景打包
- Untiy中的數據平滑處理
- Unity中SendMessage和Delegate效率比較