初心者培訓班 - Unity基本觀念

Unity基本功(4) – 物件移動&縮放

※中肯辭典

(註:有別於官方文件上的嚴謹說明,在此以工程師的角度來簡短說明此元素的特質與使用時機。)

讓遊戲變得可以玩的關鍵之一,結合上一篇教的玩家Input指令,達成讓物件移動、縮放等動作。



在有了前幾篇的概念後,我們今天要來做一點比較有感的事情(?),那就是讓角色在遊玩中實際動起來!

首先,我們先來看一下每個物件都會有的基本元素:Transfrom

 

螢幕快照 2017-07-05 上午12.41.15.png

Transfrom裡面的要素很簡單:Position(位置), Rotation(旋轉), Scale(規模)

我們在編輯階段可以直接透過改數字來改變外觀,但是當這款遊戲實際匯出成PC遊戲、手機App時該怎麼辦呢?

這時,我們就要結合上次提到的玩家Input指令。

首先,在這個物件類別底下新增一個Script,然後加入這些程式碼:

螢幕快照 2017-07-05 上午12.35.02

要進入到物件的Tansform類別,使用的方法就是this.gameObject.tranform


●移動位置 Position

Position的單位是三維向量Vector3, 所以我們在更動它的值時就要給一個Vector3,

宣告的方式為 new vector3( 值, 值, 值);

在這裡我用了一個技巧:宣告一個公開的全域變數叫做speed。

public float speed;

用一般的程式概念去想,宣告一個浮點數只要float speed;就好了,那這個public是什麼呢?

跟class裡的public原理類似,public的其中一個用途是讓其他script可以取用這個變數。

使用方法:

螢幕快照 2017-07-08 上午2.36.07.png

我們要在"GameControl"這個檔案裡讀取小雞的HP值,要在一開始(Line 7)引用Chicken這個檔案,然後給予它另一個名字,在這裡就取為player。接下來若想拿出chicken內部任何具有public性質的變數、函式,只要以player.作為開頭,就能順利使用了!


除了上述特性外,public的另一個好處是:可以在inspector裡直接更動數值

螢幕快照 2017-07-05 上午12.56.47.png

在Script這個component裡面可以直接改數字!

所以,

this.gameObject.transform.position += new Vector3(speed, 0f, 0f);

就是讓物件向左移動,因為我們給了負x方向的量。

this.gameObject.transform.position += new Vector3(speed, 0f, 0f);

則是向左移動。

除此之外,需要特別注意到一件事:

我在這裡用的是GetKey,而不是GetKeyDown

這樣才可以在按鍵被按著時不斷的更改物件的位置,而不是按多久都只觸發一次,讓畫面看起來一格一格的,不流暢。


●縮放物體 Scale

和Position的概念相似,更動物件規模的程式碼為:

this.gameObject.transform.localScale

localScale能接受的參數一樣是Vector3,所以我使用的方法和改變Position的幾乎一樣XD。

而我在這裡的輸入方式是使用滑鼠按鍵,

Input.GetMouseButton(0) 是滑鼠左鍵

Input.GetMouseButton(1) 是滑鼠右鍵


如果上述的程式碼都有確實完成的話,就能進入Play模式來測試成果了!

記得先注意一下自己的public變數有沒有把值填好,不然都是0的話是看不出東西的XD

螢幕快照 2017-07-05 上午12.56.47

我在這裡設的值是0.05,大家可以根據自己的畫面、物件大小來調整,進入Play模式後也可以繼續改!

成功的結果應該會長這樣:

Unity基本功(4) – 物件移動&縮放 有 “ 1 則迴響 ”

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s