程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 【Unity】6.4 Transform--移動、旋轉和縮放游戲對象,unitytransform--

【Unity】6.4 Transform--移動、旋轉和縮放游戲對象,unitytransform--

編輯:C#入門知識

【Unity】6.4 Transform--移動、旋轉和縮放游戲對象,unitytransform--


分類:Unity、C#、VS2015

創建日期:2016-04-20

一、簡介

Unity引擎提供了豐富的組件和類庫,為游戲開發提供了非常大的便利,熟練掌握和使用這些API,對於游戲開發的效率提高很重要。

這一節我們主要學習Transform的基本用法。本節例子的運行效果如下:

二、Transform組件

場景中的每一個物體都有一個Transform。

Transform組件決定了游戲對象的位置、方向和縮放比例,如果希望在游戲中更新玩家位置、設置相機觀察角度,都免不了要和Transform組件打交道。

每一個Transform可以有一個父級,允許你分層次應用位置、旋轉和縮放。可以在Hierarchy面板查看層次關系。他們也支持計數器(enumerator),因此你可以使用循環遍歷子物體。例如:

using UnityEngine;
using System.Collections;
public class example : MonoBehaviour
{
    public void Awake()
    {
        foreach (Transform child in transform)
        {
             child.position += Vector3.up * 10.0F;
        }
    }
}

1、成員變量

2、方法

例如(C#腳本):

void Update()
{
    //相對於自身坐標系統沿z軸向前移動物體(1單位/秒)
    transform.Translate(0, 0, Time.deltaTime);
    //在世界坐標系中向上移動物體(1單位/秒)
    transform.Translate(0, Time.deltaTime, 0, Space.World);
    //相對於攝像機向右移動物體(1單位/秒)
    transform.Translate(Vector3.right * Time.deltaTime, Camera.main.transform);
    //相對於自身坐標系統向右移動物體(1單位/秒)
    transform.Translate(Time.deltaTime, 0, 0, Camera.main.transform);
}

其中,relativeTo的選項有:

Space.Self--默認。相對於變換的自身軸移動。

Space.World--(當在場景視圖選擇物體時,x、y和z軸顯示)相對於世界坐標系統移動。

三、示例

1、運行Unity,打開ch06Demos工程。

2、在Assets下添加名為6.4的子文件夾,然後在該文件夾下創建一個名為Scene6_4.unity的場景:

3、雙擊打開該場景。

4、向場景中添加一個圓柱體(Cylinder),並將其Y軸縮放改為5:

5、再向場景中添加一個lifangt(Cube),然後將X、Y、Z縮放系數全改為2:

6、調整攝像機位置,讓圓柱體和立方體呈現出合適的大小:

7、在6.4文件夾中創建一個文件名為Demo4_1.cs的C#腳本:

8、雙擊Demo4_1,它就會自動啟動VS2015,在VS2015中將Demo4_1.cs改為下面的代碼並保存:

using UnityEngine;
using System.Collections;

public class Demo4_1 : MonoBehaviour
{
    public GameObject cube;
    public GameObject cylinder;
    void OnGUI()
    {
        if (GUILayout.Button("向左移動Cube"))
        {
            cube.transform.Translate(new Vector3(-0.5f, 0f, 0f));
        }
        if (GUILayout.Button("向右移動Cube"))
        {
            cube.transform.position = cube.transform.position + new Vector3(0.5f, 0f, 0f);
        }
        if (GUILayout.Button("放大Cube"))
        {
            cube.transform.localScale *= 1.2f;
        }
        if (GUILayout.Button("縮小Cube"))
        {
            cube.transform.localScale *= 0.8f;
        }
        if (GUILayout.Button("旋轉Cube"))
        {
            cube.transform.Rotate(new Vector3(0, 10, 0));
        }
        if (GUILayout.Button("圍繞圓柱旋轉Cube"))
        {
            cube.transform.RotateAround(cylinder.transform.position, Vector3.up, 10);
        }
    }
}

9、切換到Unity,向場景中添加一個空的GameObject,然後將腳本拖放到檢視器視圖中,再將Cube和Cylinder分別拖放到腳本對應的屬性下(賦初值):

10、按【播放】按鈕,即可看到下面的預覽效果:

多次單擊不同的按鈕或者同一個按鈕,分別觀察變化。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved