2017年10月23日 星期一

Unity程式設計初體驗(三)-遊戲物件位移和旋轉控制

有關於鍵盤的控制請參考前一篇文章淺談讀取鍵盤輸入與遊戲物件顏色控制


鍵盤的上下左右控制

我們可以使用Input.GetKey()函式來讀取按下鍵盤的鍵值,下列程式分別用來讀取上下左右鍵:
  • Input.GetKey(KeyCode.UpArrow)表示是按下向上鍵。
  • Input.GetKey(KeyCode.DownArrow)表示是按下向下鍵。
  • Input.GetKey(KeyCode.LeftArrow)表示是按下向左鍵。
  • Input.GetKey(KeyCode.RightArrow)表示是按下向右鍵。

3D向量資料型態Vector3

  • Vecto.forward 表示 Vector3(0, 0, 1

  • Vecto.back表示 Vector3(0, 0, -1)
  • Vector.up 表示Vector3(0, 1, 0)
  • Vector.down 表示Vector3(0, -1, 0)
  • Vector.left 表示Vector3(-1, 0, 0)
  • Vector.right 表示Vector3(1, 0, 0)
以下是完整的程式的列表

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour {
    public float moveSpeed = 10f;
    public float turnSpeed = 50f;
    // Use this for initialization
    void Start () {

}

// Update is called once per frame
void Update () {
        if (Input.GetKey(KeyCode.UpArrow))
            transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);

        if (Input.GetKey(KeyCode.DownArrow))
            transform.Translate(-Vector3.forward * moveSpeed * Time.deltaTime);

        if (Input.GetKey(KeyCode.LeftArrow))
            transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);

        if (Input.GetKey(KeyCode.RightArrow))
            transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);
    }
}
以上內容參考Translate and Rotate教學。

您可以試著到Unity的商店下載一個模型,然後把上面的程式放到該3D模型上,您會發現原來這麼簡單就能控制你3D模型。


3 則留言:

  1. Unity的文字物件,是否能像一般物件一樣可以使其旋轉或是放大縮小等...動畫效果?

    回覆刪除
    回覆
    1. 作者已經移除這則留言。

      刪除
    2. 可以參考下面這篇文章

      http://cheng-min-i-taiwan.blogspot.tw/2017/11/unity-3d.html

      刪除