2018年5月3日 星期四

【Unity官方教學分享】遊戲物件和元件

網頁連結

在Unity場景中被建立的物件稱為遊戲物件(Game Object),任何存在於場景中的東西都被視為Game Object,而一個Game Object是由多個元件(Component)所組成。

2018年5月2日 星期三

【Unity】非固定式虛擬方向鍵製作Part.2

上一篇中我們完成了滑鼠按下及拖曳時的回饋圖示,接下來要把拖曳中滑鼠位置的數值,帶入角色圖中完成移動的效果。

首先我們直覺一點來考慮移動這件事,目前我們已經有了開始位置startPos和當前位置nowPos,那只要把這兩點距離算出來,就有一個數值可以作為移動量值。
開啟Controller腳本,在dragState = true;後加入以下程式碼:
float dis = Vector2.Distance(nowPos, startPos);
Vector2 dir = (nowPos - startPos).normalized;
actor.Translate(new Vector2(dis * dir.x, dis * dir.y) * speed);
Debug.Log(new Vector2(dis * dir.x, dis * dir.y) * speed);
float變數dis為nowPos到startPos的距離,接著用兩點距離的normalized數值作為方向並帶入變數dir,最後將 dis * dir * speed的數值帶入actor.Translate就完成目前的移動,可以用Debug.Log看看目前移動的數值。(這裡的speed是一個全域float變數,數值0.1f)

2018年5月1日 星期二

【Unity官方教學分享】簡單的多人連線遊戲概要

網頁連結

在一整個多人連線系列的教學中,我們把握了大部分基本概念,以及多人連線遊戲中所需的元件。

我們同時也知道如何使用HLAPI建置一個專案,了解到當使用HLAPI 伺服器和所有用戶端,是在同一時間對同一物件的腳本執行同一段程式碼,接著我們討論使用HLAPI去檢查伺服器、 LocalPlayer、用戶端時,如何去控制當中的邏輯流程。

我們學習到HLAPI中的RPCs變數;Commands和ClientRpc’s,Commands是由用戶端呼叫伺服器執行,而ClientRpc’s則是由伺服器呼叫用戶端執行。

接著是SyncVars和SyncVar hooks,使用[SyncVar]變數可以讓數值保持同步,而且再使用SyncVar hooks的話,可以在該數值變化時,呼叫某個函式。

使用NetworkIdentity和NetworkTransform元件,可以讓多人連線中物件的Transforms數值保持同步。

我們學到許多關於網路的內建元件;NetworkManager、NetworkManagerHUD 和NetworkStartPosition,當然關於網路的內建元件還有許多,但它們更加專業而且也不常使用,我以我們會在其他章節中介紹。

我們希望本教學是製作多人連線遊戲的好起點,同時這個範例展現了在Unity中,製作多人遊戲是非常方便的。

上一篇:生成和重生

建立一個簡單的多人連線範例

【自製小遊戲】水平思考猜謎(海龜湯)

遊戲連結 海龜湯的玩法是由出題者提出一個難以理解的事件,參與猜題者可以提出任何問題以試圖縮小範圍並找出事件背後真正的原因。但出題者僅能以「是」、「不是」或「沒有關係」來回答問題。 本遊戲蒐集各種論壇、平台的42個題目,提供給想玩海龜湯卻愁找不到題目的你們。 ...