【Unity】DOTween的常用函數解釋

DOTween插件常用函數解釋

1.DOTween.To(通用變化動畫)

解釋:將某一個值在一定的時間內變化到另一個值(通用的函數),可用于大部分的動畫變化

使用示例:

using UnityEngine;
using DG.Tweening; 
?
public class ToTest : MonoBehaviour{//移動public void To(float duration){Vector3 endValue = new Vector3(10, 10, 10); //定義終點值DOTween.To(() => transform.position, //要移動的初始值pos => transform.position = pos, //移動過程的位置插值endValue, //目標值duration //移動耗時(秒)); ? ? ? ?} 
}
?

2.DOMove(移動動畫)

解釋:將物體從當前位置移動到目標位置

衍生函數:DOMoveX、DOMoveY、DOMoveZ(將物體從當前位置沿著X/Y/Z方向移動)

使用示例:

using UnityEngine;
using DG.Tweening; 
?
public class MoveTest : MonoBehaviour{public void MoveToTargetPosition(float duration,Vector3 targetPosition){transform.DOMove(targetPosition, //目標位置duration //移動耗時);}
}
?

3.DOScale(縮放動畫)

解釋:將物體從當前縮放值變化到目標縮放值

衍生函數:DOScaleX、DOScaleY、DOScaleZ(將物體沿X/Y/Z軸方向縮放)

使用示例:

using UnityEngine;
using DG.Tweening; 
?
public class ScaleTest : MonoBehaviour{//縮放到目標縮放值public void ScaleToTargetScale(float duration,Vector3 targetScale){transform.DOScale(targetScale, //目標縮放值duration //縮放耗時);}//基于當前縮放值按倍率進行縮放public void ScaleToTargetScale(float duration,float scale){transform.DOScale(scale, //縮放倍率(基于當前倍率)duration //縮放耗時);}
}

4.DOJump(跳躍動畫)

解釋:將物體從當前位置”跳躍“到目標位置

endValue:結束位置,

jumpPower:跳躍的最大高度,

numJumps:跳躍次數,

jumpPower:持續時間,

snapping:只取整數值(默認為false)

using UnityEngine;
using DG.Tweening; ?// 引入命名空間public class Rotate : MonoBehaviour {void Start() {transform.DOJump(new Vector3(2, 2, 2), //結束位置4, //跳躍最大高度4, //跳躍次數5, //持續時間false //false表示取浮點數計算,true表示取整數計算);}
}

5.DOShake(搖晃動畫)

解釋:模擬隨機抖動的效果,無方向性

5.1 位置搖晃

  • DOShakePosition(float duration, float/Vector3 strength, int vibrato, float randomness, bool snapping, bool fadeOut)

5.2 旋轉搖晃

  • DOShakeRotation(float duration, float/Vector3 strength, int vibrato, float randomness, bool fadeOut)

5.3 縮放搖晃

  • DOShakeScale(float duration, float/Vector3 strength, int vibrato, float randomness, bool fadeOut)

5.4 參數解釋

以下按形參的順序解釋:

duration:持續時間,

strength:晃動幅度(默認為float:1),

vibrato:晃動的次數(默認為10),

randomness:隨機晃動角度(0-180,默認為90),

snapping:只取整數值(默認為false),

fadeOut:漸出效果(默認為true)

5.5 示例

using UnityEngine;
using DG.Tweening; ?// 引入命名空間public class Shake : MonoBehaviour {void Start() {transform.DOShakePosition(5);}
}

6.DOPunch(擊打動畫)

解釋:該動畫可以在位置、旋轉、縮放三種形式上模擬表現被強力擊打后的震動,有明確的方向性

6.1 位置擊打

  • DOPunchPosition(Vector3 punch, float duration, int vibrato, float elasticity, bool snapping)

6.2 旋轉擊打

  • DOPunchRotation(Vector3 punch, float duration, int vibrato, float elasticity)

6.3 縮放擊打

  • DOPunchScale(Vector3 punch, float duration, int vibrato, float elasticity)

6.4 參數解釋

以下形參按順序解釋:

punch:擊打方向和力度,

duration:持續時間,

vibrato:晃動的次數(默認為10),

elasticity:彈性系數(默認為1),

snapping:只取整數值(默認為false)

6.5 示例

using UnityEngine;
using DG.Tweening; ?// 引入命名空間public class Punch : MonoBehaviour {void Start() {transform.DOPunchPosition(new Vector3(2, 2, 2), 5);}
}

7.文字動畫

7.1 文字顏色變化

DOColor(Color to, float duration)

  • to:當前文字當前顏色要變化到的目標顏色

  • duration:變化過程的持續時間

7.2 文字透明度變化

DOFade(float to, float duration)

  • to:數值范圍是0~1,表示文字當前不透明度要變化到的目標不透明度

  • duration:變化過程的持續時間

7.3 打字機動畫

DOText(string to, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null)

  • to:要逐個文字打出的文本

  • duration:持續時間

  • richTextEnabled:是否支持富文本(默認為True)

  • scrambleMode:亂碼效果模式(默認為不啟用亂碼)

  • scrambleChars:亂碼字符(默認為null)

枚舉值說明
ScrambleMode.None默認值,不啟用亂碼,直接逐字顯示原文本。
ScrambleMode.All所有未顯示的字符替換為完全隨機字符(如字母、數字、符號)。
ScrambleMode.Uppercase隨機大寫字母作為亂碼(如A、X、K)。
ScrambleMode.Lowercase隨機小寫字母作為亂碼(如b、q、m)。
ScrambleMode.Numerals隨機數字作為亂碼(如3、9、1)。
ScrambleMode.Custom用自定義字符作為亂碼(需通過 scrambleChars 參數指定)。

8.動畫序列(重點)

允許你將多個動畫組合在一起,以特定的順序依次執行。適用于需要在特定時間順序內執行多個動畫的場景,例如:角色的移動、跳躍和旋轉等多個動作,可以使用序列來組織這些動畫。

8.1 順序動畫(Append)

說明:讓多個動畫按照在序列中的順序逐個執行

using DG.Tweening;
?
public class SequenceTest : MonoBehaviour{// 創建一個空序列Sequence sequence = DOTween.Sequence();// 添加動畫到序列(默認按順序執行)sequence.Append(transform.DOMoveX(5, 1f)); ?// 第一步:向右移動sequence.Append(transform.DORotate(new Vector3(0, 180, 0), 0.5f)); // 第二步:旋轉sequence.Append(transform.DOScale(Vector3.zero, 1f)); // 第三步:縮小消失// 播放序列sequence.Play();
}
 

8.2 并行動畫(Join)

說明:讓多個動畫同時進行。這個特別適合一些需要同時進行的行為,比如某個角色一邊移動一邊跳躍。

Sequence sequence = DOTween.Sequence();
?
// 第一步:移動和旋轉同時進行
sequence.Append(transform.DOMoveX(5, 1f));
sequence.Join(transform.DORotate(new Vector3(0, 180, 0), 1f)); // 與移動同步進行
// 第二步:縮小
sequence.Append(transform.DOScale(Vector3.zero, 0.5f));
sequence.Play();

8.3 動畫序列的其它操作

Sequence loopTween = DOTween.Sequence();
將一個新的動畫添加到序列的末尾。
loopTween.Append(Tween tween);
?
將一個新的動畫添加到序列的開頭。
loopTween.Prepend(Tween tween);
?
將一個新的動畫添加到序列中,與當前動畫同時播放。
loopTween.Join(Tween tween);
?
在指定時間插入一個新的動畫。
loopTween.Insert(float time, Tween tween);
?
在序列中添加一個間隔(不執行任何動畫的時間)。
loopTween.AppendInterval(float interval): 
?

8.3 暫停、停止、重播、播放序列動畫

//播放序列動畫
loopTween.Play();
?
//暫停序列動畫
loopTween.Pause();
?
//停止序列動畫
loopTween.Kill();
?
//重播序列動畫
loopTween.Restart();

9.動畫緩動(SetEase)

9.1 預設動畫緩動表

DOTween為開發者提供了大量的預設好的動畫緩動,可以賦予動畫不同的運動效果。

類別Ease類型效果描述適用場景
線性Linear勻速運動,無加速或減速需要完全均勻的運動
平滑緩入InSine開始時緩慢,逐漸加速(正弦曲線)自然感強的啟動動作
InQuad緩入(二次方曲線,比InSine更明顯的加速)快速啟動的動畫
InCubic緩入(三次方曲線,加速更強)強調爆發力效果
InQuart緩入(四次方曲線,極強加速)極快速的開始
InQuint緩入(五次方曲線,最強加速)夸張的加速效果
InExpo緩入(指數曲線,初始幾乎靜止,突然加速)科技感或突然出現的效果
InCirc緩入(圓形曲線,初始慢,后端急劇加速)彈射或沖刺效果
InElastic緩入彈性效果(帶有回彈的振蕩)彈性物體(如彈簧)
InBack緩入回拉效果(先輕微反向,再加速)卡通風格的預備動作
平滑緩出OutSine結束時緩慢減速(正弦曲線)自然停止的動作
OutQuad緩出(二次方曲線,明顯減速)快速停止的動畫
OutCubic緩出(三次方曲線,減速更強)強調緩沖效果
OutQuart緩出(四次方曲線,極強減速)突然剎車效果
OutQuint緩出(五次方曲線,最強減速)夸張的緩沖效果
OutExpo緩出(指數曲線,運動到終點前幾乎無減速,突然停止)瞬間停止的科技效果
OutCirc緩出(圓形曲線,前端快速,末端急劇減速)撞擊或急停效果
OutElastic緩出彈性效果(到達終點后回彈振蕩)彈性碰撞(如球落地)
OutBack緩出回彈效果(超過終點后回拉)卡通風格的過沖效果
平滑緩入緩出InOutSine開始和結束均平滑(正弦曲線)自然的循環動作
InOutQuad對稱加速和減速(二次方曲線)標準平滑過渡
InOutCubic更強的平滑加速和減速(三次方曲線)強調中間速度變化
InOutQuart極強平滑加速和減速(四次方曲線)快速啟動和停止
InOutQuint最強平滑加速和減速(五次方曲線)夸張的平滑效果
InOutExpo幾乎瞬間加速和減速(指數曲線)科技感開關效果
InOutCirc前后端急劇變化(圓形曲線)模擬跳躍或彈跳
InOutElastic中間帶有彈性振蕩彈性物體的完整動作
InOutBack輕微過沖和回拉卡通風格的完整動作
特殊效果Flash自定義閃爍效果(需設置振幅和頻率)閃爍、震動
FlashIn/FlashOut快速閃爍緩入或緩出UI提示或警告效果
Shake隨機震動(需設置強度、頻率等)相機抖動、物體震動
自定義AnimationCurve使用Unity的AnimationCurve自定義任意曲線需要完全自定義的運動
EaseFunction通過代碼傳入自定義函數復雜數學曲線或特殊算法

9.2 使用示例

transform.DOMove(new Vector3(10,10,10),3f).SetEase(Ease.OutBack);
transform.DOMove(new Vector3(10,10,10),3f).SetEase(Ease.InSine);

10.動畫回調函數

說明:動畫回調函數類似于Unity的生命周期函數,它允許你在動畫的生命周期內執行一些代碼。

回調函數名解釋示例
.OnStart(Action onStart)在動畫開始時執行的回調tween.OnStart(() => Debug.Log("動畫開始"));
.OnPlay(Action onPlay)在動畫播放時執行的回調tween.OnPlay(() => Debug.Log("動畫播放"));
.OnUpdate(Action onUpdate)在每一幀更新時執行的回調tween.OnUpdate(() => Debug.Log("動畫更新"));
.OnComplete(Action onComplete)在動畫完成時執行的回調tween.OnComplete(() => Debug.Log("動畫完成"));
.OnKill(Action onKill)在動畫被殺死時執行的回調tween.OnKill(() => Debug.Log("動畫被殺死"));

11.Set相關函數

函數名解釋示例
.SetDelay(float delay)設置動畫開始前的延遲時間(以秒為單位)tween.SetDelay(1f); // 延遲1秒后開始
.SetEase(Ease easeType)設置動畫的曲線類型(如線性、加速、減速等,類似設置PPT動畫的出現效果)。tween.SetEase(Ease.InOutQuad); // 使用 InOutQuad 緩動
.SetLoops(int loops, LoopType loopType)設置動畫的循環次數和循環類型(如循環、反向循環等)。tween.SetLoops(3, LoopType.Yoyo); // 循環3次,反向循環
.SetAutoKill(bool autoKill)設置動畫完成后是否自動銷毀。tween.SetAutoKill(false); // 動畫完成后不自動銷毀
.SetId(object id)設置動畫的 ID,以便后續查找和管理。tween.SetId("myTween"); // 設置 ID 為 "myTween"
.SetUpdate(bool isIndependent):設置動畫是否獨立于時間更新(用于在時間暫停時仍然更新)。tween.SetUpdate(true); // 在時間暫停時仍然更新

12.查閱官方文檔

除了上述的內容,你還可以查閱DOTween的官方文檔,里面提供了插件所包含的全部API

文檔連接: DOTween - Documentation

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/906407.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906407.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906407.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據結構測試模擬題(1)

1、約瑟夫問題 #include<bits/stdc.h> using namespace std; const int N25; int e[N],ne[N],head-1,idx1; int n,m; void add_to_head(int x){e[idx]x;ne[idx]head;headidx; } void add(int k,int x){e[idx]x;ne[idx]ne[k];ne[k]idx; } int main(){cin>>n>>…

Helm配置之為特定Deployment配置特定Docker倉庫(覆蓋全局配置)

文章目錄 Helm配置之為特定Deployment配置特定Docker倉庫(覆蓋全局配置)需求方法1:使用Helm覆蓋值方法2: 在Lens中臨時修改Deployment配置步驟 1: 創建 Docker Registry Secret步驟 2: 在 Deployment 中引用 Secret參考資料Helm配置之為特定Deployment配置特定Docker倉庫(覆…

BERT 作為Transformer的Encoder 為什么采用可學習的位置編碼

摘要 BERT 在位置編碼上與原始 Transformer 論文中的 sin/cos 公式不同&#xff0c;選擇了可學習&#xff08;learned&#xff09;的位置嵌入方案。本文將從 Transformer 原始位置編碼選項入手&#xff0c;分析 BERT 選擇 learned positional embeddings 的四大核心原因&#x…

【Linux 學習計劃】-- gcc、g++、動靜態庫鏈接

目錄 什么是gcc、g gcc、g 相關操作詳解 預處理、編譯、匯編、鏈接來源 動靜態鏈接是什么 結語 什么是gcc、g gcc、g其實就是編譯器&#xff0c;是幫助我們從.c或者.cc&#xff0c;.cpp文件編譯成可執行程序的 其中&#xff0c;我們如果要編譯c語言文件的話&#xff0c;…

前端讀取本地項目中 public/a.xlsx 文件中的數據 vue3

前端讀取本地項目中 public/a.xlsx 文件中的數據 vue3 項目中需要在 Vue3 項目中讀取 public/a.xlsx 文件&#xff0c;可以使用 fetch API 來獲取文件內容 一、安裝 xlsx 首先&#xff0c;你需要安裝 xlsx 庫&#xff1a; npm install xlsx二、在需要用的頁面里引入xlsx im…

MySQL:to many connections連接數過多

當你遇到 MySQL: Too many connections 錯誤時&#xff0c;意味著當前連接數已達到 MySQL 配置的最大限制。這通常是由于并發連接過多或連接未正確關閉導致的。 一、查看當前連接數 查看 MySQL 當前允許的最大連接數 SHOW VARIABLES LIKE max_connections;查看當前使用的最大…

2024年熱門AI趨勢及回顧

人工智能的崛起 2024 年可能會被銘記為人工智能不再是一種技術新奇事物&#xff0c;而是成為現實的一年。微軟、Salesforce 和 Intuit 等巨頭將人工智能融入主流企業解決方案&#xff1b;從文案寫作到數據分析&#xff0c;專門的人工智能應用程序和服務如雨后春筍般涌現&#…

LangFlow技術深度解析:可視化編排LangChain應用的新范式 -(2)流編輯器系統

Flow Editor System | langflow-ai/langflow | DeepWiki 流編輯器系統 相關源文件 流編輯器系統是 Langflow 的核心交互式組件&#xff0c;允許用戶直觀地創建、編輯和管理 LLM 驅動的應用程序。它提供了一個直觀的畫布&#xff0c;用戶可以在其中添加節點、將其與邊緣連接并…

驅動-定時-秒-字符設備

文章目錄 目的相關資料參考實驗驅動程序-timer_dev.c編譯文件-Makefile測試程序-timer.c分析 加載驅動-運行測試程序總結 目的 通過定時器timer_list、字符設備、規避競爭關系-原子操作&#xff0c;綜合運用 實現一個程序&#xff0c;加深之前知識的理解。 實現字符設備驅動框…

[Java實戰]Spring Boot整合Kafka:高吞吐量消息系統實戰(二十七)

[Java實戰]Spring Boot整合Kafka&#xff1a;高吞吐量消息系統實戰&#xff08;二十七&#xff09; 一、引言 Apache Kafka作為一款高吞吐量、低延遲的分布式消息隊列系統&#xff0c;廣泛應用于實時數據處理、日志收集和事件驅動架構。結合Spring Boot的自動化配置能力&…

Kotlin Multiplatform--04:經驗總結(持續更新)

Kotlin Multiplatform--04&#xff1a;經驗總結&#xff08;持續更新&#xff09; 引言 引言 本章用來記載筆者開發過程中的一些經驗總結 一、Ktor設置Header 在官方文檔中&#xff0c;想要設置Header的示例代碼如下&#xff1a; client.get("https://ktor.io&qu…

在 Ubuntu 系統中,將 JAR 包安裝為服務

在 Ubuntu 系統中&#xff0c;將 JAR 包安裝為服務可以通過 systemd 來實現。以下是詳細的操作步驟&#xff1a; 準備工作 確保 JAR 文件路徑和 Java 運行時環境已準備好。驗證 Java 是否可用&#xff1a; java -version創建 systemd 服務文件 systemd 的服務文件通常位于 …

電商項目-商品微服務-品牌管理微服務開發

一、功能分析 品牌管理微服務包括&#xff1a; &#xff08;1&#xff09;查詢全部列表數據 &#xff08;2&#xff09;根據ID查詢實體數據 &#xff08;3&#xff09;增加 &#xff08;4&#xff09;修改 &#xff08;5&#xff09;刪除 &#xff08;6&#xff09;分頁…

Spring Boot開發—— 整合Lucene構建輕量級毫秒級響應的全文檢索引擎

文章目錄 一、為什么選擇 Lucene?輕量級搜索的底層密碼二、核心原理:Lucene 的倒排索引2.1 倒排索引:速度之源2.2 段合并優化策略三、Spring Boot集成Lucene實戰3.1 依賴配置3.2 實體與索引設計3.3 核心索引服務(含異常處理)3.4 使用示例(測試類)四、高級優化技巧4.1 索…

SpringBootDay1|面試題

目錄 一、springboot框架 1、什么是springboot 2、Spring Boot的主要優點 3、springboot核心注解 4、定義banner&#xff08;springboot的logo&#xff09; 5、springboot配置文件 6、springboot 整合 jdbc 二、面試題 1&#xff09;springmvc的作用 ?編輯 2&#x…

jQuery Ajax中dataType 和 content-type 參數的作用詳解

jQuery Ajax中dataType與contentType參數解析 一、核心概念對比 參數作用對象數據類型默認值dataType響應數據預期接收的數據格式jQuery自動判斷&#xff08;根據響應頭MIME類型&#xff09;contentType請求數據發送數據的編碼格式application/x-www-form-urlencoded 二、da…

幾款常用的虛擬串口模擬器

幾款常用的虛擬串口模擬器&#xff08;Virtual Serial Port Emulator&#xff09;&#xff0c;適用于 Windows 系統&#xff0c;可用于開發和調試串口通信應用&#xff1a; 1. com0com (開源免費) 特點&#xff1a; 完全開源免費&#xff0c;無功能限制。 可創建多個虛擬串口…

LLM筆記(六)線性代數

公式速查表 1. 向量與矩陣&#xff1a;表示、轉換與知識存儲的基礎 向量表示 (Vectors): 語義的載體 在LLM中&#xff0c;向量 x ∈ R d \mathbf{x}\in\mathbb{R}^d x∈Rd 是信息的基本單元&#xff0c;承載著豐富的語義信息&#xff1a; 詞嵌入向量 (Word Embeddings)&am…

[特殊字符] Word2Vec:將詞映射到高維空間,它到底能解決什么問題?

一、在 Word2Vec 之前,我們怎么處理語言? 在 Word2Vec 出現之前,自然語言處理更多是“工程方法”,例如字符串匹配、關鍵詞提取、正則規則...。但這些表示通常缺乏語義,詞與詞之間看不出任何聯系以及非常淺顯。當然,技術沒有好壞,只有適合的場景。例如: 關鍵詞匹配非常…

棧和隊列的模擬實現

棧和隊列的模擬實現 容器適配器priority_queue(優先級隊列&#xff09;priority_queue的使用priority_queue的模擬實現&#xff1a; 仿函數什么叫仿函數&#xff1f;需要自己實現仿函數的情況&#xff1a; 棧的模擬實現隊列的模擬實現deque&#xff08;vector和list的縫合怪&am…