本節(jié)要點(diǎn)
1.實(shí)例化游戲物體
1.游戲中的案例介紹
在很多 MMORPG 類的游戲中都有類似于“金錢副本”的副本關(guān)卡。在這類副
本中通常都是限定一個(gè)時(shí)間,在這個(gè)時(shí)間內(nèi)玩家可以盡情的破壞,然后收集金錢。
分析游戲截圖講解場景元素:[見圖]
①場景中所有的壇子,模型都是一樣的,壇子是預(yù)制體。
②壇子是從“天上”掉下來的,所以壇子模型身上有剛體組件。
③如果玩家在一段時(shí)間內(nèi)沒有打碎壇子,這些壇子會(huì)消失。
2.案例場景制作
①創(chuàng)建地面模型;
②創(chuàng)建“壇子”模型,并制作成預(yù)制體;
3.實(shí)例化生成 1 個(gè)壇子
GameObject.Instantiate(Object, Vector3, Quaternion);
參數(shù)說明:
Object:用于實(shí)例化的預(yù)制體;
Vector3:實(shí)例化后生成的物體所在的位置;
Quaternion[四元數(shù)]:實(shí)例化后生成的物體的旋轉(zhuǎn)狀態(tài);
Quaternion.identity:無旋轉(zhuǎn);
4.構(gòu)造隨機(jī)位置
位置是用 Vector3 類型進(jìn)行表示的。
X,Y,Z 三個(gè)值確定了物體在三維世界中的位置。
Random.Range(min, max):生成隨機(jī)數(shù)。
在 min 和 max 直接隨機(jī)生成一個(gè)隨機(jī)數(shù)。
演示:按下鍵盤的一個(gè)鍵,就在隨機(jī)位置實(shí)例化一個(gè)物體。
2.銷毀游戲物體
GameObject.Destroy(Object, float);定時(shí)銷毀某個(gè)游戲物體。
參數(shù)說明:
Object:要銷毀的游戲物體;
float:時(shí)間,多少秒后銷毀;
關(guān)鍵代碼
CreateBoxs
public class CreateBoxs : MonoBehaviour {
//定義公開變量 并通過拖曳 把相關(guān)預(yù)置體拖至相關(guān)屬性下
public GameObject goPrefab;
void Start () {
//實(shí)例化對(duì)象關(guān)鍵語句(靜態(tài)方法)
// GameObject.Instantiate(goPrefab,Vector3.up,Quaternion.identity);//參數(shù)1:預(yù)置體,就是要實(shí)例化的對(duì)象;參數(shù)2:0位置上方1米,參數(shù)3:4元數(shù)無旋轉(zhuǎn)
//自己定義隨機(jī)范圍(位置)
// Vector3 position = new Vector3(1,1,1);
//Vector3 position = new Vector3(Random.Range(-9.0f,9.0f),10,Random.Range(-9.0f,9.0f));//參數(shù)1:X軸的范圍 Y固定下高度,Z軸的范圍
//GameObject.Instantiate(goPrefab,position,Quaternion.identity);
//通過按下空格鍵隨機(jī)實(shí)例化box;
}
void Update () {
//通過按下空格鍵隨機(jī)實(shí)例化box;
if (Input.GetKeyDown(KeyCode.Space))
{
Vector3 position = new Vector3(Random.Range(-9.0f,9.0f),10,Random.Range(-9.0f,9.0f));
GameObject.Instantiate(goPrefab,position,Quaternion.identity);
}
}
}
DestroyBox
public class DestroyBox : MonoBehaviour {
// Use this for initialization
void Start () {
//出現(xiàn)段時(shí)候后,銷毀物體 關(guān)鍵語句 gameobject靜態(tài)類方法
GameObject.Destroy(gameObject,Random.Range(5.0f,10.0f));//參數(shù)1:銷毀物體的對(duì)象(就是本身) 參數(shù)2:銷毀的時(shí)間
//以上方法只能寫在start方法里,不能寫在其他update方法中;
}
//// Update is called once per frame
//void Update () {
//}
}
小結(jié)

Unity API.png