創作內容

3 GP

Unity資料蒐集 ─ 美麗的Sin曲線

作者:悠浪貓│2014-12-31 11:37:54│巴幣:54│人氣:1052
因為剛好在弄一些平滑化的東西

所以順手上來分享一個簡單的平滑曲線 Sin 曲線 的小應用囉~

數學真的是很妙又很美的東西阿,雖然我也不喜歡那些密密麻麻的恐怖運算



Sin 曲線是一條伏流於 -1 ~ 1 的平滑曲線

循環於弧度的 0 ~ 2 * PI 之間

應用這個原理我們可以抓出其中的 0 ~ 1 的部分,也就是 0 ~ PI 之間


ps. Sin( 0 ) = 0 Sin( PI / 2 ) = 1 Sin( PI ) = 0
所以單純要 0 ~ 1 得要取 0 ~ PI / 2 唷

另外在程式上,乘法比除法快很多,所以沒必要的話就多使用乘法來運算吧~
ex : PI / 2 = PI * 0.5f


然後利用這個部份去做一些平滑的運算

例如 加速,減速,平滑來回 之類的動態模擬


簡單的用法如下

假設我要取一個 0.4 ~ 1.0 中間,隨著時間連動的連續平滑值,可以這麼做

float nValue = 0.6f * Mathf.Sin(Mathf.PingPong(Time.time * 2.0f, Mathf.PI)) + 0.4f;

畢竟是 Unity,我也就偷懶用一些 Unity 的東西囉

PingPong 的效果是將第一個參數的值,換算後來回介於 0 ~ 第二個參數之間

因為超過 PI 就會變負的,所以我將 Unity 提供的時間數值規範在 0 ~ PI 之間

再將這個值丟給 Sin ,就能得到一條平滑 0 ~ 1 之間的曲線

然後因為我想將得出的數值規範在 0.4 ~ 1.0 之間

所以再加上一點小手續就完成囉~


而如果不想規範在 0 ~ 1 之間,而是要 -1 ~ 1 之間的話

直接像下面這樣把 time 丟進去就可以囉

float nValue = 0.6f * Mathf.Sin(Time.time) + 0.4f;


我是應用在 Alpha 變化上,以及一些需要平滑運動的場景變換上

跟大家分享囉~

Unity 基本上都有在很多地方提供這類的功能

但在一些熱愛數學的因子下,還有實在懶的挖那些功能,所以就自己玩數學囉~
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=2700841
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

3喜歡★magicyeats 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:遊戲製作日誌 [ 100... 後一篇:遊戲製作日誌 [ 101...

追蹤私訊切換新版閱覽

作品資料夾

f44737810買夠工讀生
在這裡想怎麼叫都沒問題看更多我要大聲說3小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】