本節(jié)要點
1.實例化游戲物體
1.游戲中的案例介紹
在很多 MMORPG 類的游戲中都有類似于“金錢副本”的副本關(guān)卡笛质。在這類副
本中通常都是限定一個時間扳抽,在這個時間內(nèi)玩家可以盡情的破壞肌稻,然后收集金錢。
分析游戲截圖講解場景元素:[見圖]
①場景中所有的壇子,模型都是一樣的壮锻,壇子是預(yù)制體宇驾。
②壇子是從“天上”掉下來的,所以壇子模型身上有剛體組件碉京。
③如果玩家在一段時間內(nèi)沒有打碎壇子厢汹,這些壇子會消失。
2.案例場景制作
①創(chuàng)建地面模型谐宙;
②創(chuàng)建“壇子”模型烫葬,并制作成預(yù)制體;
3.實例化生成 1 個壇子
GameObject.Instantiate(Object, Vector3, Quaternion);
參數(shù)說明:
Object:用于實例化的預(yù)制體卧惜;
Vector3:實例化后生成的物體所在的位置厘灼;
Quaternion[四元數(shù)]:實例化后生成的物體的旋轉(zhuǎn)狀態(tài);
Quaternion.identity:無旋轉(zhuǎn)咽瓷;
4.構(gòu)造隨機位置
位置是用 Vector3 類型進行表示的设凹。
X,Y,Z 三個值確定了物體在三維世界中的位置。
Random.Range(min, max):生成隨機數(shù)茅姜。
在 min 和 max 直接隨機生成一個隨機數(shù)闪朱。
演示:按下鍵盤的一個鍵月匣,就在隨機位置實例化一個物體。
2.銷毀游戲物體
GameObject.Destroy(Object, float)奋姿;定時銷毀某個游戲物體锄开。
參數(shù)說明:
Object:要銷毀的游戲物體;
float:時間称诗,多少秒后銷毀萍悴;
關(guān)鍵代碼
CreateBoxs
public class CreateBoxs : MonoBehaviour {
//定義公開變量 并通過拖曳 把相關(guān)預(yù)置體拖至相關(guān)屬性下
public GameObject goPrefab;
void Start () {
//實例化對象關(guān)鍵語句(靜態(tài)方法)
// GameObject.Instantiate(goPrefab,Vector3.up,Quaternion.identity);//參數(shù)1:預(yù)置體,就是要實例化的對象寓免;參數(shù)2:0位置上方1米癣诱,參數(shù)3:4元數(shù)無旋轉(zhuǎn)
//自己定義隨機范圍(位置)
// 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);
//通過按下空格鍵隨機實例化box袜香;
}
void Update () {
//通過按下空格鍵隨機實例化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)段時候后,銷毀物體 關(guān)鍵語句 gameobject靜態(tài)類方法
GameObject.Destroy(gameObject,Random.Range(5.0f,10.0f));//參數(shù)1:銷毀物體的對象(就是本身) 參數(shù)2:銷毀的時間
//以上方法只能寫在start方法里蜈首,不能寫在其他update方法中实抡;
}
//// Update is called once per frame
//void Update () {
//}
}
小結(jié)
Unity API.png