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

来源:http://www.cnblogs.com/rainmj/archive/2016/04/20/5414059.html
-Advertisement-
Play Games

分類:Unity、C#、VS2015 創建日期:2016-04-20 一、簡介 Unity引擎提供了豐富的組件和類庫,為游戲開發提供了非常大的便利,熟練掌握和使用這些API,對於游戲開發的效率提高很重要。 這一節我們主要學習Transform的基本用法。本節例子的運行效果如下: 二、Transfor... ...


分類:Unity、C#、VS2015

創建日期:2016-04-20

一、簡介

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

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

image

二、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、成員變數

image

2、方法

image

例如(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的場景:

image

3、雙擊打開該場景。

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

image

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

image

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

image

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

image

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分別拖放到腳本對應的屬性下(賦初值):

image

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

image

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

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 我第一次接觸“線程”的概念時,覺得它深奧難懂,看了好多本書,花了很長時間才領悟到它的真諦。現在我就以一個初學者的心態,把我所理解的“多線程”描述給大家。這一次是系列文章,比較完整的展示與線程相關的基本概念。希望對初學者有所幫助。 如果你是高手,請你別繼續看,會浪費你寶貴的時間。 一、基本概念 什麼是 ...
  • 我們在做開發的時候,很多時候需要和Json數據格式打交道,如Web開發裡面,很多時候,數據通過Json進行傳遞到頁面上,然後在進行處理的。而使用Json的時候,我們很多時候會涉及到幾個序列化對象的使用:DataContractJsonSerializer,JavaScriptSerializer 和 ...
  • 概述 BPEL:全稱為Business Process Execution Language,即業務流程執行語言,是一種使用XML編寫的編程語言。用於自動化業務流程,也曾經被稱作WSBPEL和 BPEL4WS。廣泛使用於Web服務相關的項目開發中,優點為具有可移植性和有效保護了投資。 BPEL是一門 ...
  • c# 操作 xml 在System.XMl 有以個類可以操作xml (網上對這些類的記錄真得很少啊 可能因為類比較多吧 msdn的介紹) 創建一個新的xml XmlDocument xmldoc = new XmlDocument(); //在XML的文檔的最頭部加入XML的聲明段落 XmlNode ...
  • 分類:Unity、C#、VS2015 創建日期:2016-04-21 一、簡介 Unity提供了—個非常易用和強大的用於處理輸入信息的類:Input,利用該類可以處理滑鼠、鍵盤、搖桿/方向盤/手柄等游戲外設,也可以處理iOS/Androd等移動設備的觸摸輸入信息。 程式員通過編寫腳本接收輸入信息,完... ...
  • 控制反轉IOC, 全稱 “Inversion of Control”。依賴註入DI, 全稱 “Dependency Injection”。 面向的問題:軟體開發中,為了降低模塊間、類間的耦合度,提倡基於介面的開發,那麼在實現中必須面臨最終是有“誰”提供實體類的問題。(將各層的對象以松耦合的方式組織起 ...
  • 在團隊中推廣面向介面開發兩年左右,成果總體來說我還是挺滿意的,使用面向介面開發的模塊使用Unity容器配置的功能非常穩定,便於共用遷移(另一個項目使用只需要複製配置和調用介面即可)也很好擴展(操作的資料庫、表、資源等都可以配置)。 但是由於當時開發的匆忙(邊開發邊應用),留下一些比較致命的問題: 1 ...
  • 如: 讓它選中“統計今天”(控制項Name為cobListTime) 方法: 1.cobListTime.Text = cobListTime.Items[0].ToString();//預設選中第一個值 2.cobListTime.SelectedText = "統計今天"; 3.cobListTi ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...