1. 程式人生 > >1、簡單控制

1、簡單控制

ota time posit 垂直 log 字符 space date cto

一、物體移動

法1:

    void Update ()
    {
        //transform:(轉換)Translate:(平移)Input.GetAxis:(獲得軸輸入) Horizontal:(水平軸)Vertical:(垂直軸)
        transform.Translate(Input.GetAxis("Horizontal") * Time.deltaTime * 5, 0, Input.GetAxis("Vertical") * Time.deltaTime * 5);
    }
    //Time.deltaTime(使物體勻速):如果不乘以Time.deltaTime則以每幀為單位進行旋轉,如果乘以Time.deltaTime則以每秒為單位

其中:

    void Update ()
    {    //物體方向以攝像機坐標為準
        transform.Translate(Vector3.right * Time.deltaTime, Camera.main.transform);
    }
    void Update ()
    {    //物體方向以世界坐標為準,其中Space.Self以本地(物體)坐標為準
        transform.Translate(Vector3.forward * Time.deltaTime,Space.World);
    }

法2:

    void
Update () { if (Input.GetKey(KeyCode.W))//GetKey(獲取鍵盤輸入)KeyCode(鍵碼) { transform.Translate(Vector3.forward * Time.deltaTime * 5); } if (Input.GetKey(KeyCode.S)) { transform.Translate(0, 0, -Time.deltaTime * 5);//三個參數對應於(在X抽上左右移動,在Y軸上上下移動,在Z軸上前後移動)
} if (Input.GetButton("Jump")) { transform.Translate(Vector3.up * Time.deltaTime * 5); } }

註:Translate後接Vector3三維矢量不需要添加三個參數。GetButton:後面加雙引號直接輸入按鍵名稱的字符串,而GetKey則是輸入字符碼。(GetButton:點住鼠標不放,代碼會持續運行;GetButtondown:點一次代碼運行一次;GetButtonUp:放開鼠標才會執行)

二、物體的旋轉

    float rotateSpeed = 50f;
    void Update ()
    {
        if (Input.GetButton("Fire2"))
        {
            transform.Rotate(Vector3.up * Time.deltaTime * rotateSpeed);
        }
        if (Input.GetButton("Fire1"))
        {
            transform.Rotate(Time.deltaTime * rotateSpeed, 0, 0);
        }
    }

三、限制移動範圍

    void Update ()
    {
        if (transform.position.x > -4 && transform.position.x < 4)
        {
            transform.Translate(Input.GetAxis("Horizontal") * Time.deltaTime * 5, 0, 0);
        }
        if (transform.position.x < -4)
        {
            transform.Translate(Time.deltaTime * 5, 0, 0);
        }
        if (transform.position.x > 4)
        {
            transform.Translate(-Time.deltaTime * 5, 0, 0);
        }
    }

1、簡單控制