unity案例入門(拾取遊戲)

1405048499729402發表於2019-02-08
  1. 案例簡述
    這個案例實現一個非常簡單的拾取寶物遊戲,主角是一個小球,玩家通過鍵盤控制小球拾取全部寶物。
  2. 鍵盤控制物體移動
  3. Rigidbody rd;public int force = 10;

void Start () {
rd = GetComponent ();//獲得物體的剛體元件
}
void Update () {
float h = Input.GetAxis (“Horizontal”);//獲得虛擬軸橫向移動距離
float v = Input.GetAxis (“Vertical”);//獲得虛擬軸縱向移動距離
rd.AddForce (new Vector3(h, 0, v) * force);//對物體施加力的作用
}

  1. 控制相機跟隨物體移動
  2. Transform playerTransform;//需要跟隨的物體private Vector3 offset;//物體與攝像機的位置偏移量

void Start () {
offset = transform.position – playerTransform.position;
}
void Update () {
transform.position = playerTransform.position + offset;
}
首先記錄相機與需要跟隨的物體的position偏移量,而後讓攝像機位置通過偏移量實時改變。

  1. 使寶物自己旋轉
  2. Update () {

transform.Rotate (new Vector3(0, 1, 0), Space.World);
}
Update()方法每秒大約執行60次,根據這個調節旋轉速度。

  1. 碰撞檢測撿起物體
  2. OnCollisionEnter(Collision collision){

if (collision.collider.tag == “Food”) {
Destroy (collision.collider.gameObject);
}
}
相對而言,碰撞檢測雖然也能實現拾取物體的功能,但是通過碰撞檢測拾取物體,會在拾取的同時發生碰撞,這是顯然不合理的,因此撿起物體通常通過下面的觸發檢測實現。

  1. 觸發檢測撿起物體
  2. OnTriggerEnter(Collider collider){

if (collider.tag == “Food”) {
Destroy (collider.gameObject);
}
}
觸發檢測的使用方法與碰撞檢測非常相似。使用時需在相應物體的碰撞器元件欄中勾選isTrigger選項。

  1. 初步使用GUI顯示分數與勝利宣言
  2. int score = 0;public Text text;public GameObject winText;

void OnTriggerEnter(Collider collider){
if (collider.tag == “Food”) {
score++;
text.text = “Score: ” + score.ToString ();
if (score == 11) {
winText.SetActive (true);
}
Destroy (collider.gameObject);
}
}
細心的朋友可能會發現,同是文字物件,但是顯示分數與勝利宣言的物件分別用了Text和GameObject型別。這是因為,記錄分數的text我們只需要更改其顯示內容,即只對它的text元件進行操作,因此只需要獲得它的text元件;而winText不同,我們需要它在遊戲勝利時顯示出來,也就是控制整一個物件,因此需要獲得整一個GameObject。
更多unity2018的功能介紹請到paws3d學習中心查詢。


相關文章