2017年11月20日 星期一

Unity程式設計初體驗(九)-3D文字的程式設計

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

Unity程式設計初體驗(三)-遊戲物件位移和旋轉控制文章中,有說明如何控制物件的前進、後退、以及向左或向右旋轉,本文以3D文字物件為例,新增文字縮放功能,如下圖:


其步驟如下:

  1. 在功能表上選擇File->New Project功能選項,出現對話框,輸入專案名稱後,再按Create Project按鈕,即可以建立新專案。
  2. 選擇Game Object->3D Object->3D Text就可以建立3D文字物件。
  3. 在右下角Project專案視窗中,在Assets資料夾上按下右鍵,選擇Create->C# Script建立新的C#腳本檔案,然後使改檔名成為TextControl 。
  4. 原始程式如下(黃底是表示新增的程式):


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

public class TextControl : 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);

    if (Input.GetKey(KeyCode.B))
            transform.localScale += new Vector3(1.01f * Time.deltaTime, 1.01f * Time.deltaTime, 1.01f * Time.deltaTime);

    if (Input.GetKey(KeyCode.S))

            transform.localScale -= new Vector3(1.01f * Time.deltaTime, 1.01f * Time.deltaTime, 1.01f * Time.deltaTime);
    }
}
上面黃底粗體字的部份,指依照Unity程式設計初體驗(三)-遊戲物件位移和旋轉控制文章後,新增的程式碼。從上面程式要轉換座標,我們可以用Translate()函式,要旋轉改變方向可以用Rotate()函式,要改變大小可以用localScale屬性

沒有留言:

張貼留言