最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

unity中差值函數(shù)

2021-10-23 01:26 作者:柯昌弟弟c  | 我要投稿

在做攝像機(jī)移動時候,在網(wǎng)上查看代碼,發(fā)現(xiàn)有兩個類似的函數(shù)

  1. Lerp()函數(shù)

  2. SmoothDamp()函數(shù)

兩個差值函數(shù)都可以在攝像機(jī)平滑移動或者顏色漸變上使用。下邊就簡單介紹一下兩個函數(shù)。

學(xué)習(xí)這兩個函數(shù)主要是來自博主@巨龍餓了:https://www.jianshu.com/p/650e5ff6402c的兩篇文章。

1.Lerp

unity常見的API中Vector3.Lerp Mathf.Lerp等是較為常用

//a:變化的起始值

//b:變化的目標(biāo)值

//t:本次調(diào)用返回值所占b和a的差值的比例

//返回值為一個float類型

public static float Lerp(float a, float b, float t);

這種差值在最初的使用,是放在update中進(jìn)行每幀運(yùn)行

這里舉一個例子,如果x從0到10進(jìn)行移動:

  • 第一幀:移動到當(dāng)前位置(0,0,0)到(10,0,0)的十分之一,也就是(1,0,0)

  • 第二幀:移動到當(dāng)前位置(1,0,0)到(10,0,0)的十分之一,也就是(1.9,0,0)

  • 第二幀:移動到當(dāng)前位置(1.9,0,0)到(10,0,0)的十分之一,也就是(2.71,0,0)

  • 后面以此類推...

在自己親自嘗試之后,發(fā)現(xiàn)lerp的用法會使值無限接近目標(biāo),但不等于目標(biāo)。


當(dāng)然也可以通過每一幀去改變第三個參數(shù)的值,讓第三個值從0逐漸變化到1,也就可以實(shí)現(xiàn)平滑,并且可以準(zhǔn)確的知道變化結(jié)束的那一刻了。


2.SmoothDamp

SmoothDamp的效果類似于Lerp的第一種用法所產(chǎn)生的效果,如果是作用在位移上,表現(xiàn)為慢慢減速到達(dá)目標(biāo)位置,見名思意Damp(阻尼)就像是受到了阻力而減速,而這個函數(shù)和Lerp不同的地方則在于他的Smooth(平滑),因?yàn)槠鋬?nèi)部實(shí)現(xiàn)是遭輪子大佬調(diào)整過無數(shù)次參數(shù)得到的值,相比起Lerp簡單粗暴的插值,在表現(xiàn)上看起來會優(yōu)秀不少,所以一般如果用于攝像機(jī)平滑,都會使用SmoothDamp的。

//current:需要改變的參數(shù)的當(dāng)前值,一般放在update中將每一幀的當(dāng)前值傳入

//target:目標(biāo)值

//currentVelocity:函數(shù)所作用目標(biāo)移動的最大速度,這個所謂的速度,表征的是該物體每秒移動Unity內(nèi)多少個單位。

(需要注意的是:首先在傳參時記得加上ref關(guān)鍵字,因?yàn)?code>SmoothDamp的內(nèi)部會更新這個值并且傳遞出來,其次,這個傳入的參數(shù)的生命周期需要比SmoothDamp長,因?yàn)镾moothDamp內(nèi)部會根據(jù)上一次計(jì)算得到的速度,去更新下一次的位置,簡單的方法就是把這個傳入的參數(shù)設(shè)為全局變量

//smoothTime:平滑的時間,但是經(jīng)過我的實(shí)測這個時間并不準(zhǔn)確有點(diǎn)小坑,希望有大神可以解答一下這個問題。

//maxSpeed:作用物體的最大速度。

public?static?float?SmoothDamp(float?current,?float?target,?ref float currentVelocity, float smoothTime, float maxSpeed);

使用方法與Lerp的第二種使用方法類似,在Update中去調(diào)用就可以了,不過需要注意需要將當(dāng)前值傳入current,而不應(yīng)該傳進(jìn)一個恒定的值。

還是放在update中執(zhí)行,這樣就平滑了



unity中差值函數(shù)的評論 (共 條)

分享到微博請遵守國家法律
房山区| 鹿泉市| 江华| 阿拉尔市| 新竹县| 延庆县| 柘荣县| 定结县| 宜兰县| 巴青县| 德保县| 洮南市| 盐池县| 资中县| 吉林市| 尼木县| 宿迁市| 朝阳区| 汉阴县| 毕节市| 尤溪县| 永寿县| 兴海县| 赫章县| 玉树县| 新野县| 达日县| 澄迈县| 永寿县| 基隆市| 巧家县| 隆林| 石狮市| 宁城县| 余江县| 常宁市| 基隆市| 苏尼特左旗| 新宁县| 南宁市| 怀安县|