博主營地 | Unity3D 實用技巧 - 基礎數學庫函數學習

2021-02-21 Unity官方平臺

你是否也會為數學庫函數而煩惱呢?小編看到許多大神都在發表相關的文章,忍不住把它們默默收集在經驗目錄中,今天就與大家一起分享。

Mathf 數學函數淺析

1、Mathf.Abs 絕對值

計算並返回指定參數 f 絕對值。

2、Mathf.Acos 反餘弦

static function Acos (f : float) : float

以弧度為單位計算並返回參數 f 中指定的數字的反餘弦值。

3、Mathf.Approximately 近似

static function Approximately (a : float, b: float) : bool

比較兩個浮點數值,看它們是否非常接近, 由於浮點數值不精確,不建議使用等於來比較它們。例如,1.0==10.0/10.0也許不會返回true。

public class example : MonoBehaviour {             public void Awake() {               if(Mathf.Approximately(5.0F, 50.0F / 50.0F))                  print("近似");             } }

4、Mathf.Asin 反正弦

static function Asin (f : float) : float

以弧度為單位計算並返回參數 f 中指定的數字的反正弦值。

5、Mathf.Atan2 反正切

static function Atan2 (y : float, x :float) : float

以弧度為單位計算並返回 y/x 的反正切值。返回值表示相對直角三角形對角的角,其中 x 是臨邊邊長,而 y 是對邊邊長。

返回值是在 x 軸和一個二維向量開始於 0 個結束在 (x,y) 處之間的角。

public class example : MonoBehaviour {             public Transform target;             void Update() {                   Vector3 relative = transform.InverseTransformPoint(target.position);                   float angle = Mathf.Atan2(relative.x, relative.z) * Mathf.Rad2Deg;                   transform.Rotate(0,angle, 0);             } }

static function Atan (f : float) :float計算並返回參數 f 中指定的數字的反正切值。返回值介於負二分之 pi 與正二分之 pi 之間。static function CeilToInt (f : float) : intstatic function Ceil (f : float) : float返回 f 指定數字或表達式的上限值。數字的上限值是大於等於該數字的最接近的整數。static function Clamp01 (value : float) :float限制 value 在 0,1 之間並返回 value 。如果 value 小於 0 ,返回 0。如果 value 大於 1 ,返回 1 ,否則返回 value  。static function Clamp (value : float, min :float, max : float) : float限制 value 的值在 min 和 max 之間, 如果 value 小於 min ,返回 min 。如果 value 大於 max ,返回 max ,否則返回 value 。static function Clamp (value : int, min :int, max : int) : int限制 value 的值在 min 和 max 之間,並返回 value 。11、Mathf.ClosestPowerOfTwo 最近的二次方static function ClosestPowerOfTwo (value :int) : intstatic function Cos (f : float) : float返回由參數 f 指定的角的餘弦值(介於 -1.0 與 1.0 之間的值)。static var Deg2Rad : float14、Mathf.Mathf.Rad2Deg 弧度轉度static var Rad2Deg : floatstatic function DeltaAngle (current :float, target : float) : float
// Prints 90 Debug.Log(Mathf.DeltaAngle(1080,90));

16、Mathf.Epsilon 小正數

static var Epsilon : float

一個很小的浮點數值。(只讀)

最小的浮點值,不同於0。

以下規則:

-    anyValue + Epsilon = anyValue

-    anyValue - Epsilon = anyValue

-    0 + Epsilon = Epsilon

-    0 - Epsilon = -Epsilon

一個在任意數和Epsilon的之間值將導致在任意數發生截斷誤差。

public class example : MonoBehaviour {  bool isEqual(float a, float b) {    if(a >= b - Mathf.Epsilon && a <= b + Mathf.Epsilon)      return true;      else      return false;       }   }

17、Mathf.Exp 指數

static function Exp (power : float) : float

返回 e 的 power 次方的值。

18、Mathf.FloorToInt 最大整數

static function FloorToInt (f : float) :int

返回最大的整數,小於或等於f。

19、Mathf.Floor 下限值

static function Floor (f : float) : float

返回參數 f 中指定的數字或表達式的下限值。下限值是小於等於指定數字或表達式的最接近的整數。

20、Mathf.Infinity 正無窮

static var Infinity : float

表示正無窮,也就是無窮大,∞ (只讀)

21、Mathf.InverseLerp 反插值

計算兩個值之間的Lerp參數。也就是value在from和to之間的比例值。

//現在參數是3/5 float parameter =Mathf.InverseLerp(walkSpeed, runSpeed, speed);

22、Mathf.IsPowerOfTwo 是否 2 的冪static function IsPowerOfTwo (value : int): bool
// prints false Debug.Log(Mathf.IsPowerOfTwo(7));// prints true  Debug.Log(Mathf.IsPowerOfTwo(32));

23、Mathf.LerpAngle 插值角度

static function LerpAngle (a : float, b :float, t : float) : float

和 Lerp 的原理一樣,當他們環繞 360 度確保插值正確。

a和b是代表度數。

public class example : MonoBehaviour {  public float minAngle = 0.0F;  public float maxAngle = 90.0F;  void Update() {       float angle = Mathf.LerpAngle(minAngle, maxAngle, Time.time);       transform.eulerAngles= new Vector3(0, angle, 0);          }     } }

24、Mathf.Lerp 插值

static function Lerp (from : float, to :float, t : float) : float

基於浮點數t返回 a 到 b 之間的插值,t限制在 0~1 之間。

當 t = 0 返回 from ,當 t = 1 返回 to 。當 t = 0.5 返回 from 和 to 的平均值。

25、Mathf.Log10 基數10的對數

static function Log10 (f : float) : float

返回f的對數,基數為10。

26、Mathf.Log 對數

static function Log (f : float, p : float): float

返回參數 f 的對數。

// logarithm of 6 in base 2 //以2為底6的對數 // prints 2.584963 print(Mathf.Log(6, 2));

static function Max (a : float, b : float): floatstatic function Max (params values :float[]) : floatstatic function Min (a : float, b : float): floatstatic function Min (params values :float[]) : float29、Mathf.MoveTowardsAngle 移動角static function MoveTowardsAngle (current :float, target : float, maxDelta : float) : float像 MoveTowards ,但是當它們環繞 360 度確保插值正確。變量 current 和 target 是作為度數。為優化原因,maxDelta 負值的不被支持,可能引起振蕩。從target 角推開 current ,添加 180 度角代替。static function MoveTowards (current :float, target : float, maxDelta : float) : float這實際上和 Mathf.Lerp 相同,而是該函數將確保我們的速度不會超過 maxDelta 。maxDelta 為負值將目標從推離。31、Mathf.NegativeInfinity 負無窮static var NegativeInfinity : float32、Mathf.NextPowerOfTwo  下個2的冪
Debug.Log(Mathf.NextPowerOfTwo(7));

33、Mathf.PingPong 桌球

static function PingPong (t : float, length: float) : float

0 到 length 之間往返。t 值永遠不會大於 length 的值,也永遠不會小於 0 。

The returned value will move back and forthbetween 0 and length.

返回值將在 0 和 length 之間來回移動。

34、Mathf.PI 圓周率

static var PI : float

PI(讀pai)的值,也就是圓周率(π)的值3.14159265358979323846...(只讀)

35、Mathf.Pow 次方

static function Pow (f : float, p : float): float

計算並返回 f 的 p 次方。

36、Mathf.Repeat 重複

static function Repeat (t : float, length :float) : float

循環數值 t , 0 到 length 之間。t 值永遠不會大於 length 的值,也永遠不會小於 0 。

這是類似於模運算符,但可以使用浮點數。

public class example : MonoBehaviour {  void Update() {   transform.position= new Vector3(Mathf.Repeat(Time.time, 3), transform.position.y,transform.position.z);    }  }

37、Mathf.RoundToInt 四捨五入到整數

static function RoundToInt (f : float) :int

返回 f 指定的值四捨五入到最近的整數。

如果數字末尾 0.5 ,因此它是在兩個整數中間,不管是偶數或是奇數,將返回偶數。

38、Mathf.Round 四捨五入

static function Round (f : float) : float

返回浮點數 f 進行四捨五入最接近的整數。

如果數字末尾是 0.5 ,因此它是在兩個整數中間,不管是偶數或是奇數,將返回偶數。

39、Mathf.Sign 符號

static function Sign (f : float) : float

返回 f 的符號。

當 f 為正或為0返回1,為負返回-1。

40、Mathf.Sin 正弦

static function Sin (f : float) : float

計算並返回以弧度為單位指定的角 f 的正弦值。

41、Mathf.SmoothDampAngle 平滑阻尼角度

static function SmoothDampAngle (current :float, target : float, ref currentVelocity : float, smoothTime : float,maxSpeed : float = Mathf.Infinity, deltaTime : float = Time.deltaTime) : float

參數

current :當前的位置。

target :我們試圖達到的位置。

currentVelocity :當前速度,這個值在你訪問這個函數的時候會被隨時修改。

smoothTime( the target faster) :要到達目標位置的近似時間,實際到達目標時要快一些。

maxSpeed :可選參數,允許你限制的最大速度。

deltaTime :上次調用該函數到現在的時間。預設為Time.deltaTime。

隨著時間的推移逐漸改變一個給定的角度到期望的角度。這個值通過一些彈簧減震器類似的功能被平滑。這個函數可以用來平滑任何一種值,位置,顏色,標量。最常見的是平滑一個跟隨攝像機。

//一個簡單的平滑跟隨攝像機 //跟隨目標的朝向 public class example : MonoBehaviour {    public Transform target;   public float smooth = 0.3F;   public float distance = 5.0F;    private float yVelocity = 0.0F;  void Update() {    //從目前的y角度變換到目標y角度    float yAngle = Mathf.SmoothDampAngle(transform.eulerAngles.y, target.eulerAngles.y,ref yVelocity, smooth);    //target的位置    Vector3 position = target.position;    //然後,新角度之後的距離偏移   position += Quaternion.Euler(0, yAngle, 0) * new Vector3(0, 0, -distance);    //應用位置    transform.position= position;    //看向目標    transform.LookAt(target);     }}

42、Mathf.SmoothDamp 平滑阻尼

static function SmoothDamp (current :float, target : float, ref currentVelocity : float, smoothTime : float,maxSpeed : float = Mathf.Infinity, deltaTime : float = Time.deltaTime) : float

參數

current :當前的位置。

target :我們試圖達到的位置。

currentVelocity :當前速度,這個值在你訪問這個函數的時候會被隨時修改。

smoothTime :要到達目標位置的近似時間,實際到達目標時要快一些。

maxSpeed :可選參數,允許你限制的最大速度。

deltaTime :上次調用該函數到現在的時間。預設為Time.deltaTime。

描述

隨著時間的推移逐漸改變一個值到期望值。

這個值就像被一個不會崩潰的彈簧減振器一樣被平滑。這個函數可以用來平滑任何類型的值,位置,顏色,標量。

public class example : MonoBehaviour {      public Transform target;      public float smoothTime = 0.3F;      private float yVelocity = 0.0F;      void Update() {          float newPosition = Mathf.SmoothDamp(transform.position.y, target.position.y, refyVelocity, smoothTime);          transform.position= new Vector3(transform.position.x, newPosition, transform.position.z);        } }

43、Mathf.SmoothStep 平滑插值

static function SmoothStep (from : float,to : float, t : float) : float

和lerp類似,在最小和最大值之間的插值,並在限制處漸入漸出。

public class example : MonoBehaviour {      public float minimum = 10.0F;      public float maximum = 20.0F;      void Update() {        transform.position= new Vector3(Mathf.SmoothStep(minimum, maximum, Time.time), 0, 0);    } }

44、Mathf.Sqrt 平方根

static function Sqrt (f : float) : float

計算並返回 f 的平方根。

45、Mathf.Tan 正切

static function Tan (f : float) : float 計算並返回以弧度為單位 f 指定角度的正切值。

文章雖有些平常乏味,但還是希望大家能留言共同討論學習。如果你喜歡本文的話,在官網 unity.cn 或 Unity Connect App 搜索關鍵詞「數學庫」 就可以找到這篇文章,還可以收藏起來,慢慢學習哦。

想要你的創意被更多人看見嗎?快快加入Unity社區,在社區內分享經驗,你也有機會獲得Unity官方推薦哦! 博客發布入口:unity.cn/articles - 「寫文章"

相關焦點

  • 博主營地 | Unity3D 實用技巧 - 理論知識庫(一)
    今天小編會把常用的一些理論問題匯總起來,後面可以做一個快速的記憶和學習。原生GUI:http://unity3d.9ria.com/?p=2587NGUI:http://blog.csdn.net/mfc11/article/details/17681429為什麼dynamic font在unicode環境下優於static font。Unicode是國際組織制定的可以容納世界上所有文字和符號的字符編碼方案。
  • Unity3D 實用技巧 - Unity Shader 匯總式學習·初探篇
    通常採用動態編譯的方式(Cg也支持靜態編譯方式),即在宿主程序運行時,利用Cg運行庫(Cg Runtimer Library)動態編譯Cg代碼。Cg數據類型:01  基礎功能類型函數03  透明效果:只要一個片元的透明度不滿足條件(通常小於某個閾值),那麼就捨棄對應的片元。被捨棄的片元不會在進行任何的處理,也不會對顏色緩衝產生任何影響;否則,就會按照普通的不透明物體來處理,即進行深度測試,深度寫入等等。
  • Unity 3d可視化節點材質Shader Forge實用教程 初級篇
    大家好,我們前段時發布了免費的shader forge教程,現在更完整,更強大的Shader Forge實用教程來了!
  • 新手如何從零開始學習unity
    接下來給大家分享一點經驗與技巧。(一)  首先unity的腳本可以用很多語言來寫,比如java,js,c#,用C#,很多人說自己沒有C#的基礎,其實自己自學也能夠學會,在unity中學會簡單的遊戲邏輯開發,其實不需要太多的C#知識,unity用的VS編輯器其實是在C#裡面調用unity的API,因為它在創建腳本的時候引入了一個 unityEngine的空間,這個空間就是unity的 C# API,那麼新手只需要去學習
  • Unity 重Built-in到URP函數對應整理
    本文提供重 Built-in 到 URP 的示例總結,希望可以幫助到大家1.開始之前這裡有一些連結可以幫助你深入了解URPUnity URP 官方文檔 https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal%408.1/manual/index.html
  • Unity3D 推薦的7個項目和案例練習
    過高要求自己可能會浪費學習的時間,而且Unity3D是遊戲開發工具,學習匹配的內容以應對面臨的參賽、畢設、工作才是關鍵。學習的階段:初級則是能快速完成、少量插件運用的案例。中級則涉及遊戲框架,綜合運用。高級則涉及網絡開發,伺服器端。
  • 萬能函數Sumproduct超級實用技巧解讀!
    Sumproduct函數是Excel中的數學函數,其功能非常的強大,但是對於具體的用法和技巧,也不能說出個頭緒來……今天,小編帶大家系統的學習Sumproduct函數的具體用法和技巧!一、功能、語法及基礎用法。
  • Unity腳本生命周期
    作為一個unity從業人員,相信許多人有時候都會記不住unity的生命周期,記不住沒關係,有了這張圖,一切都是浮雲。
  • excel數據計算的基礎,公式與函數的基礎操作技巧
    公式與函數的基礎操作技巧excel自帶很多實用的函數,比較常見的有邏輯函數、判斷函數等,我們可以根據自己的需要選擇適合的函數,有關excel函數的內容,我們以後會詳細講解一下。公式與函數的基礎操作技巧這次我們主要分享的是有關公式與函數的基礎操作技巧,下面我們就以實例結合視頻的形式將詳細的操作步驟展示出來
  • vlookup函數的高階學習,對參數的處理技巧
    我們在實際工作中,我們經常使用excel表格處理和分析數據,我們為了提高工作效率,我們通常會在平時積累各種各樣的實用小技巧,我們這次還是分享有關查找函數的使用技巧。我們之前學習過vlookup函數的基礎操作技能,這次我們學習一下vlookup函數的高階技能,有關對vlookup函數參數的處理小技巧,下面我們就一起學習一下。
  • Excel基礎知識-函數錄入技巧
    如果你常用Excel一定對函數錄入不陌生,不過你真的知道函數錄入的技巧嗎?如何更快的錄入函數嗎?我們就來一起聊聊這些技巧吧!Excel為我們提供了錄入函數方法有四式:快捷方式,函數庫式,函數嚮導式,手工輸入式;快捷方式Excel將我們常用的一些函數設計了快捷按鈕"自動求和",在這個按鈕下面還集成了「求和」,「平均值」,「計數」,「最大值」,
  • 高中數學重點章節:函數基礎知識點梳理總結,複習必備
    ——莎士比亞每天分享高中學習方法、高分經驗、解題技巧等,幫助大家找到正確的學習方法去學習,今天給大家分享的是高中數學函數知識點歸納總結。函數知識點是高中數學學習的重要內容,也是高考出題中重點考查內容,試卷分數佔比很大,所以同學們要加強練習、重點掌握。
  • numpy庫學習總結(基礎知識)
    最近在學習Python中OpenCV庫,學習花了很多時間,發現基礎知識很重要,尤其是numpy這個庫,在進行程序開發時,處理大量類似數組這種數據結構時,它的重要性等同於Python中的列表,像前篇我們寫的《使用Python中OpenCV庫創建一幅圖片的RGB通道圖片》中,對於圖片的處理
  • 高考數學對數函數五大基礎考點講解及相關的解題技巧
    高考數學對數函數五大基礎考點講解,八大重要公式及其相關的解題技巧本課程為高考複習資料內容,適用於高一及高一以上的學生。請根據自身情況選擇性閱讀。符號說明:log34:以3為底4的對數,為區分,將真數部分設為黑體。
  • 高一數學必修1基本初等函數解題技巧
    高一數學必修1基本初等函數解題技巧整個高中的數學都是圍繞函數進行考察的,而函數都是圍繞基本初等函數進行相關的變形進行相關的考察的,所以必須從基本初等函數下手,來解決函數中的相關問題,找到突破口,掌握考點
  • Unity自帶函數說明
    在unity的腳本中,有大量的腳本執行按照預先確定的順序執行的事件函數,由於篇幅有限,無法一一列舉,這裡只列舉一些常用的自帶函數的順序,並論述他們之間的區別
  • Unity面試題部分高頻題目整理匯集
    Unity3d沒有多線程的概念,不過unity也給我們提供了StartCoroutine(協同程序)和LoadLevelAsync(異步加載關卡)後臺加載場景的方法。 StartCoroutine為什麼叫協同程序呢,所謂協同,就是當你在StartCoroutine的函數體裡處理一段代碼時,利用yield語句等待執行結果,這期間不影響主程序的繼續執行,可以協同工作。
  • Excel教程:函數VLOOKUP實用技巧
    說到Excel的學習,只要掌握「4+1」就可以應付大部分數據處理問題了,4個核心函數:VLOOKUP、IF、SUM、SUMIF,1個核心功能:數據透視表。其中的VLOOKUP函數是工作中最常用的一種查找函數,掌握好VLOOKUP函數能夠極大提高工作的效率。也是大部分小夥伴接觸的第一個函數,幾乎每天都在用,頻率很高。但是,大部分小夥伴都是停留在基本的用法上,而且也發現了VLOOKUP函數的一些缺點,比如:不能逆向查找、不能多條件查找、不能返回多列等問題。下面我就和大家分享一下VLOOKUP函數的一些使用技巧,解決這些貌似不能的問題。
  • matplotlib繪製數學函數
    是Python的另一個功能強大的繪圖庫,它可以呈現出2D的數據形式,還可以做成動畫,只需要幾行代碼就可以生成各式各樣的圖形,對新手而言可謂十分友好。本文主要通過繪製數學函數,從而學習matplotlib圖形的坐標軸、圖例、畫布等各個選項的設置。導入matplotlib繪圖庫,一般情況下,不用import整個matplotlib模塊,只需要調用pyplot模塊。
  • MySQL基礎函數——數學函數詳解
    函數表示對輸入參數值返回-一個具有特定關係的值,MySQL提供了大量豐富的函數,在進行資料庫管理以及數據的查詢和操作時將會經常用到各種函數。通過對數據的處理,資料庫功能可以變得更加強大,更加靈活地滿足不同用戶的需求。各類函數從功能方面主要分為以下幾類:數學函數、字符串函數、日期和時間函數、條件判斷函數、系統信息函數和加密函數等。