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