Unity C# | 旋轉(Rotate)#2-平滑的旋轉方式

更新於 2023/06/30閱讀時間約 4 分鐘

一、前言

  這篇文章將會講述平滑的旋轉與單次旋轉的差異,並介紹旋轉的兩種體系與其使用效果,並提供參考的示範影片。

二、單次旋轉與平滑旋轉

  在上一篇文章中,我們學會了常見的旋轉,介紹了旋轉的基本知識,分享旋轉的多載函式,並分析物理旋轉與座標旋轉的差異,有興趣可以去參考上一篇文章,接下來這邊會講述單次與平滑的差異,並介紹兩種旋轉體系。

1. 單次旋轉的效果

  在程式腳本(Script)中,單次執行一次旋轉,會直接從現在的位置到達終點位置,不會有中間的動畫,會以順時針的方向旋轉,在設計上,這種旋轉方式會直接完成,因此會有很強烈的回饋感,可以進行很精確的操作。

2. 平滑旋轉的效果

  當我們在製作注重美術的遊戲時,平滑旋轉則是重中之重,優秀且經過設計的旋轉提供了良好的視覺效果,並且玩家不會感受到突兀,能很好的沉浸在遊戲設計師所創造的世界中。

3. 旋轉的兩種體系

  在 Unity 的引擎中,有兩種旋轉體系,第一種是以歐拉角(Euler Angles)的座標變換(Transform)體系;第二種是以四元數(Quaternion)體系。
  前者方便易懂好使用,後者複雜詳細不易錯;在歐拉角中,在軸靠得很近時會出現萬象鎖的問題,並且在資源上消耗較大,因為要重新計算;而四元數的體系就沒這個問題了,而且比較節省資源。

三、歐拉角(Eluer Angles)-簡易的旋轉

  雖然歐拉角看起來有不少問題,不過他還是很常使用,最主要的問題是因為使用難度低、程式碼數量少,只要避開複雜的旋轉,僅用於簡單的旋轉,那歐拉角完全沒問題。
  因為前一篇文章已經撰寫過歐拉角的旋轉的旋轉函式如何使用,這篇文章將會搭配影片並分享使用與觀察體驗,提出在遊戲設計中值得使用的內容。

1. Transform.Rotate()

  從影片中可以看到,這種旋轉方式並沒有太大的問題,如果每一個影格旋轉一格看起來太突兀,可以改變成每一個影格轉動半格,也因此可以理解為何這會是最常被使用的旋轉函式了。

2. Transform.RotateAround

  這個旋轉還包含了座標的轉換,不過它主要是以某個點為圓心公轉,可以用行星公轉來比喻,只要我們決定好點與公轉速度,它就會開始旋轉了。

3. Transform.LookAt

  這個函式的功能是看向某一個目標,在影片中,搭配上一個公轉函式,能很好的呈現這兩個函式的效果,也就是追蹤某個目標,並強硬的看向對像。

四、四元數(Quaternion)-複雜的旋轉

  我至今還沒完全搞懂四元數的插值使用方式,不過這邊將會把他們的一些函式的使用方式分享出來,有興趣的也可以到官網上查看。
  我在接觸到 Vector3 的 Lerp 時到是有稍微搞懂,它是一個比較像從A點到B點之間把所有狀態提取出來,有一個插值比例,接近A的比例為0,接近B的比例為1,而 Lerp 與 Slerp 的差別在於,這條線是一個直線還是曲獻。

1. Quaternion.Lerp

  這個函式需要三個參數:起始四元數、目標四元數和插值比例(t)。插值比例的範圍在0到1之間,0代表完全使用起始四元數,1代表完全使用目標四元數。
Quaternion Lerp(Quaternion a, Quaternion b, float t);

2. Quaternion.Slerp

  這個函式需要三個參數:起始四元數、目標四元數和插值比例(t),跟前面的 Lerp完全相同。在我找到的教學中,若使用 Slerp 的話,在旋轉的過程中會保持同樣的轉速,保持曲線旋轉的平滑性。
Quaternion Slerp(Quaternion a, Quaternion b, float t);

3. Quaternion.RotateTowards

  這個函式用於將一個四元數逐漸旋轉到另一個四元數,它接受三個參數:當前四元數、目標四元數、最大旋轉角度。最大旋轉角度指定了每次旋轉的最大幅度。通過調整最大旋轉角度,就可以控制旋轉速度和平滑度。
Quaternion RotateTowards(Quaternion from, Quaternion to, float maxDegreesDelta);

五、後記

  原本我式打算把兩種旋轉方式都弄出來,不過在 Lerp 上面我卡住非常久,直到一段時間後我觀看 Youtube 的影片才稍微了解。
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
105會員
247內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
瓶裝雪的沙龍 的其他內容
這篇文章將會講述常見的座標(Transform)旋轉方式,適合初學者到進階程式員複習。
這篇文章將會講述設計模式中的狀態模式,其資料源自於書籍、網路、個人理解,從簡介→架構→撰寫→測試的整個流程進行介紹與分享。
這篇文章將會介紹建構式(Constructor),這是一個隱藏在程式腳本中的重要知識,我們極常使用建構式,但新手程式員幾乎不會知道它。
這篇文章將會講述 Unity Visual Effect Graph 的系統簡介,並且簡單介紹這項系統主線上的四個核心組件。
這篇文章將會講述子彈射擊與命中的思路,不包含實際程式設計。
一、前言   這篇文章將會簡單介紹物件導向的設計模式,以及學習這項技術需要有哪些先備知識,學習才會比較順利。 二、設計模式   在物件導向中,除了最基本的五大原則以外,其實還有一知名的概念,那就是設計模式(Design Pattern),它能運用到很多層面。 1. 解決一再出現的問題   許多程式設
這篇文章將會講述常見的座標(Transform)旋轉方式,適合初學者到進階程式員複習。
這篇文章將會講述設計模式中的狀態模式,其資料源自於書籍、網路、個人理解,從簡介→架構→撰寫→測試的整個流程進行介紹與分享。
這篇文章將會介紹建構式(Constructor),這是一個隱藏在程式腳本中的重要知識,我們極常使用建構式,但新手程式員幾乎不會知道它。
這篇文章將會講述 Unity Visual Effect Graph 的系統簡介,並且簡單介紹這項系統主線上的四個核心組件。
這篇文章將會講述子彈射擊與命中的思路,不包含實際程式設計。
一、前言   這篇文章將會簡單介紹物件導向的設計模式,以及學習這項技術需要有哪些先備知識,學習才會比較順利。 二、設計模式   在物件導向中,除了最基本的五大原則以外,其實還有一知名的概念,那就是設計模式(Design Pattern),它能運用到很多層面。 1. 解決一再出現的問題   許多程式設
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 變數 宣告變數不能使用數字開頭,或是除了_之外的符號。 ·整數 int ·浮點數 float、double float 精度低、佔的資源較少,double
Thumbnail
如何使用Game CI 提供的Github Action 將建置專案自動化
Thumbnail
Unity (美股代號:U) 是全球最大的遊戲製作平台與龍頭引擎。不過股價自高點滑落並盤據20-30元已經有一段時間。此次財報非常樂觀,值得一看。
Thumbnail
開啟Xampp伺服器,並啟動 apache & mysql mysql建立 開啟Unity 建立 Script toPhp.cs Unity物件 toWeb物件設定 此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤 Button 設定 test.php con
  透過Unity平台開發出來的遊戲,比較廣為人知,例如憤怒鳥和寶可夢。Unity 的遊戲開發技術,可以刺激遊戲產業,更朝氣蓬勃有效率地開發新遊戲用戶透過遊戲平台,就可以進入元宇宙的世界!
Thumbnail
Unity在這週公布了2022年Q1的財報,財報發布後股價下挫30%,下跌至30美元,已經遠遠跌破兩年前的上市價。Unity雪崩式的下跌是因為Q1的營運不理想、未來的營運預期不理想、還是單純是隨著近期成長股估值修正而下跌呢?這篇文會分析Unity 2022Q1財報及預測Unity未來的營運狀況。
Thumbnail
來談一下最近我很感興趣的一個投標,遊戲開發平台 Unity。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 變數 宣告變數不能使用數字開頭,或是除了_之外的符號。 ·整數 int ·浮點數 float、double float 精度低、佔的資源較少,double
Thumbnail
如何使用Game CI 提供的Github Action 將建置專案自動化
Thumbnail
Unity (美股代號:U) 是全球最大的遊戲製作平台與龍頭引擎。不過股價自高點滑落並盤據20-30元已經有一段時間。此次財報非常樂觀,值得一看。
Thumbnail
開啟Xampp伺服器,並啟動 apache & mysql mysql建立 開啟Unity 建立 Script toPhp.cs Unity物件 toWeb物件設定 此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤 Button 設定 test.php con
  透過Unity平台開發出來的遊戲,比較廣為人知,例如憤怒鳥和寶可夢。Unity 的遊戲開發技術,可以刺激遊戲產業,更朝氣蓬勃有效率地開發新遊戲用戶透過遊戲平台,就可以進入元宇宙的世界!
Thumbnail
Unity在這週公布了2022年Q1的財報,財報發布後股價下挫30%,下跌至30美元,已經遠遠跌破兩年前的上市價。Unity雪崩式的下跌是因為Q1的營運不理想、未來的營運預期不理想、還是單純是隨著近期成長股估值修正而下跌呢?這篇文會分析Unity 2022Q1財報及預測Unity未來的營運狀況。
Thumbnail
來談一下最近我很感興趣的一個投標,遊戲開發平台 Unity。