在 Unity 用途廣泛的數值彈簧 – Numeric Springing

今天來聊聊一個很數學、很物理的東西:彈簧。

做遊戲難免會遇到的優化問題,就是玩家操控腳色的流暢性,一個腳色在玩家的操控下走走停停、跑跑跳跳,光是如何讓物件的 position 可以流暢且自然,就是個大課題。或者在外部操控器的訊號跟物件的移動之間的協調,如何讓物件的移動有著 “起承轉合" 般的真實動感,在 VR 遊戲上會大幅影響玩家的舒適度,以及對遊戲的接受度。

有個方式可以處理上述的議題,就是套用 “數值彈簧" (numeric springing) 在物體的移動上,產生起步的加速、停留的減速,減少物體在移動時讓然覺得卡頓或者突兀的感覺。"數值彈簧" 是個我一直想要理解與實作的東西,如今終於動工了,這篇文章分享的是我的作法,以及 數值彈簧 的廣泛用途。

Read More »

開發 Unity Android Plugin – 從零開始

這篇文章記錄了我所知道的基本 Unity Android Plugin 開發流程,目的是補充我所看過的網路資源,在細節上的說明不足。會特別針對幾個我遭遇過的疏漏,或因開發需求不同會有的細節變化進行說明。

整篇文章將流程分為幾段來描述:

  • 建立 Android 專案
  • 找到並匯入 Unity Java classes
  • 編寫你的 Java classes
  • 處理 build.gradle file
  • 編譯 .jar 並放到該去的位置
  • 編寫 Manifest.xml
  • 編寫 C# Script 作為 Plugin API

Read More »

比較Unity中幾種內建資料結構 – Some Datastructure in Unity

Unity是一個遊戲引擎,結合了前端場景編輯與後端程式開發的功能,而且一個專案可以幾乎不用修改就能發佈到 Android、iOS、web等不同平台上,相當的方便。

不過如此擁有方便功能的軟體,難免在某處會有所短,在使用Unity一段時間後,我最在意的一點便是 Unity 似乎在效能上有相當大的問題。即使有種種效能上的問題,Unity的在開發上方便性依舊難以取代,如果在意效能的話,開發者就只能在可行的範圍內專精自己所開發的細緻度,優化每個部份。

研究如何優化程式是一個很瑣碎的過程,但也有它的趣味所在,而且這過程能令我更了解自己所在使用的程式或工具。這次我測試了幾個資料結構的效能,讓我在開發 Unity 專案時可以依照需求選用適當的資料結構,以下便是測試的紀錄。

Read More »