【零基礎入門unity游戲開發——動畫篇】unity舊動畫系統Animation組件的使用

考慮到每個人基礎可能不一樣,且并不是所有人都有同時做2D、3D開發的需求,所以我把 【零基礎入門unity游戲開發】 分為成了C#篇、unity通用篇、unity3D篇、unity2D篇

  • 【C#篇】:主要講解C#的基礎語法,包括變量、數據類型、運算符、流程控制、面向對象等,適合沒有編程基礎的同學入門。
  • 【unity通用篇】:主要講解unity的基礎通用的知識,包括unity界面、unity腳本、unity資源管理、unity動畫、unity攝像機等,適合unity初學者入門。
  • 【unity3D篇】:主要講解unity3D的知識,unity3D角色、unity3D物理系統、unity3D光照等,適合只想做2D游戲的開發者學習。
  • 【unity2D篇】unity2D篇:主要講解unity2D的知識,包括unity2D角色、unity2D物理系統、unity2D光照等,適合只想做3D游戲的開發者學習。

這樣方便大家按需選擇性的去學習,比如有編程基礎的大概率可以直接從unity通用篇開始入門,沒有編程基礎的建議從C#篇開始學習。只想做2D游戲的話,可以直接從unity2D篇開始學習,3D篇大概率就不需要看了,節約學習時間成本。

前言

1、什么是老動畫系統?

Unity中有兩套動畫系統:

Legacy Animation System(老系統)Mecanim Animation System(新系統)
組件類型Animation組件Animator組件
動畫控制方式線性動畫片段直接播放狀態機驅動動畫邏輯
版本支持Unity 4及更早版本原生支持Unity 4開始引入(當前主流)
動畫資源格式.anim 動畫片段支持.anim與更復雜的動畫控制器.controller
骨骼系統基礎骨骼支持完善的人形動畫重定向系統

值得注意的是,隨著unity更新老動畫系統已經逐漸被淘汰了,目前可能主要用于處理老版本項目和簡單的一些自制動畫。新項目已經不建議大家使用了,所以這部分內容大家作為了解就行。

2、老動畫系統控制動畫播放

注意
在創建動畫之前為對象添加Animation組件之后再制作動畫。
這時制作出的動畫和之前的動畫格式是有區別的。

老動畫系統創建Animation前要給生成動畫的對象添加Animation腳本,掛載過后Unity就會認為這個對象要使用老動畫系統。
在這里插入圖片描述

掛載過會按老套路在Animation窗口新建Animation動畫,選擇文件夾存儲。
在這里插入圖片描述
因為對象添加了Animation組件,創建后Unity不會自動創建Animator文件并且給對象添加Animator組件。只會把新創建的Animation文件和Animation組件關聯。Animation窗口上的操作和之前一模一樣。
在這里插入圖片描述
要注意老版本創建出來的Animation文件上的參數和新版本是不同的。

一、老Animation組件參數

在這里插入圖片描述

介紹
Animation動畫默認播放的動畫。
Animations該動畫組件可以控制的所有動畫,對對象新創建老版本的Animation后會自動添加關聯到這里。
Play Automatically是否一開始就自動播放默認動畫。
Animate physics動畫是否與物理交互。
Animate physics是否用物理方式驅動動畫
Culling type決定什么時候不播放動畫;Always Animate:始終播放。Based On Renderers:基于渲染的方式執行,動畫離開屏幕了就不再執行,節省性能

二、老Animation文件參數

在這里插入圖片描述

  • Default:讀取設置得更高的默認重復模式。
  • Once:播放一次就停止。
  • Loop:從頭到尾不停循環播放。
  • ClampForever:播放結束會停在最后一幀,并且會一直播放最后一幀(相當于狀態不停止),表現效果和Once一樣,但是邏輯處理上不同。
  • PingPong:從頭到尾從尾到頭不停播放。

三、老Animation動畫系統代碼控制

1、得到Animation組件

要把腳本掛載到對象上,用腳本得到Animation組件

private Animation animation;void Start()
{animation = this.GetComponent<Animation>();
}

2、播放動畫

Animation.Play方法

//Animation的Play方法 播放動畫
//播放沒有混合的動畫。
//會直接生硬的切換動畫 假如播放到一半切換動畫 回強行停止第一個播放的動畫 切換到第二個播放動畫的初始狀態 進行播放
if (Input.GetKeyDown(KeyCode.Alpha1))
{animation.Play("1");
}
if (Input.GetKeyDown(KeyCode.Alpha2))
{animation.Play("2");
}

3、淡入播放,自動產生過渡效果

Animation.CrossFade方法

//Animation的CrossFade方法 淡入播放,自動產生過渡效果
//在后續 time 秒的時間段內,使名稱為 animation 的動畫淡入,使其他動畫淡出。
//會先淡出把狀態慢慢變成要播放的動畫的初始在狀態,再播動畫
if (Input.GetKeyDown(KeyCode.Alpha3))
{//當你要播放的動畫的開始狀態 和當前的狀態 不一樣時 //就會產生過渡效果animation.CrossFade("3");//animation.Play("3");
}

4、前一個播完直接再播放下一個

Animation.PlayQueued方法

//Animation的PlayQueued方法 前一個播完直接再播放下一個
//在先前的動畫播放完畢后再播放動畫。
//可以理解為把動畫加到隊列中 等上一個動畫播放完再播 會生硬的切換初始狀態
if (Input.GetKeyDown(KeyCode.Alpha4))
{animation.PlayQueued("2");
}

5、前一個播完淡入播放下一個

Animation.CrossFadeQueued方法

//Animation的CrossFadeQueued方法 前一個播完淡入播放下一個
//使動畫在上一個動畫播放完成后交叉淡入淡出。
//可以理解為把動畫加到隊列中 等上一個動畫播放完再播 會先淡出把狀態慢慢變成要播放的動畫的初始在狀態,再播動畫
if ( Input.GetKeyDown(KeyCode.Alpha5) )
{animation.CrossFadeQueued("2");
}

6、停止播放所有動畫

Animation.Stop方法

//Animation的Stop方法 停止播放所有動畫
//停止所有使用該動畫啟動的正在播放的動畫。
//animation.Stop();

7、是否在播放某個動畫

Animation.IsPlaying方法

//Animation的IsPlaying方法 是否在播放某個動畫
//名稱為 name 的動畫是否正在播放?
if ( animation.IsPlaying("1") )
{}

8、播放模式設置

Animation.wrapMode變量

//Animation的wrapMode變量 播放模式設置
//應如何處理超出此剪輯播放范圍的時間?
//可以進去看枚舉
//animation.wrapMode = WrapMode.Loop;//設置成循環播放

9、其它

層級和權重以及混合(老動畫系統需要通過代碼來達到動畫的遮罩、融合等效果)

//設置層級
animation["1"].layer = 1;
//設置權重
animation["1"].weight = 1;
//混合模式 疊加還是混合
animation["1"].blendMode = AnimationBlendMode.Additive;
//設置混組相關骨骼信息
animation[""].AddMixingTransform();

四、實戰

修改動畫為循環,并拖入綁定動畫
在這里插入圖片描述
通過代碼方式播放動畫
在這里插入圖片描述

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Animation : MonoBehaviour
{void Start(){}void Update(){//點擊鼠標左鍵開始播放動畫if (Input.GetMouseButtonDown(0)){//播放為right的動畫片段GetComponent<Animation>().Play("right");}}
}

專欄推薦

地址
【零基礎入門unity游戲開發——C#篇】
【零基礎入門unity游戲開發——unity通用篇】
【零基礎入門unity游戲開發——unity3D篇】
【零基礎入門unity游戲開發——unity2D篇】
【制作100個Unity游戲】
【推薦100個unity插件】
【實現100個unity特效】
【unity框架/工具集開發】

完結

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果學習過程中遇到任何問題,也歡迎你評論私信找我。

贈人玫瑰,手有余香!如果文章內容對你有所幫助,請不要吝嗇你的點贊評論和關注,你的每一次支持都是我不斷創作的最大動力。當然如果你發現了文章中存在錯誤或者有更好的解決方法,也歡迎評論私信告訴我哦!

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

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

相關文章

Linux網絡:數據鏈路層以太網

目錄 認識數據鏈路層關于以太網1. 基本概念2. 以太網幀格式3. MAC vs IP 認識數據鏈路層 數據鏈路層 位于物理層和網絡層之間&#xff0c;其作用是將源自物理層來的數據可靠地傳輸到相鄰節點的目標主機的網絡層&#xff0c;主要通過物理介質(如以太網&#xff0c;Wi-Fi等)將數…

SpringMVC與SpringCloud的區別

SpringMVC與SpringCloud的核心區別 功能定位 ? SpringMVC&#xff1a; 基于Spring框架的Web層開發模塊&#xff0c;采用MVC&#xff08;Model-View-Controller&#xff09;模式&#xff0c;專注于處理HTTP請求、路由分發&#xff08;如DispatcherServlet&#xff09;和視圖…

使用MATIO庫寫入MATLAB結構體(struct)數據的示例程序

使用MATIO庫寫入MATLAB結構體(struct)數據的示例程序 MATIO是一個用于讀寫MATLAB數據文件(.mat)的開源C庫。下面是一個完整的示例程序&#xff0c;展示如何使用MATIO庫創建一個包含結構體數據的MAT文件。 示例程序 #include <stdio.h> #include <stdlib.h> #inc…

SSE與Streamable HTTP的區別:協議與技術實現的深度對比

引言 在現代Web開發中&#xff0c;實時數據傳輸是許多應用的核心需求&#xff0c;從聊天應用到股票市場更新&#xff0c;從游戲服務器到AI模型通信。為了滿足這一需求&#xff0c;各種技術應運而生&#xff0c;其中Server-Sent Events (SSE)和Streamable HTTP是兩種重要的實時…

【Easylive】視頻在線人數統計系統實現詳解 WebSocket 及其在在線人數統計中的應用

【Easylive】項目常見問題解答&#xff08;自用&持續更新中…&#xff09; 匯總版 視頻在線人數統計系統實現詳解 1. 系統架構概述 您實現的是一個基于Redis的視頻在線人數統計系統&#xff0c;主要包含以下組件&#xff1a; 心跳上報接口&#xff1a;客戶端定期調用以…

Linux 高級命令與常見操作:文本處理、系統管理與網絡調試

下面是一份針對已經熟悉 Linux 基礎命令的用戶所整理的「高級命令與常見操作」筆記&#xff0c;涵蓋文本處理、系統管理、網絡調試與其他常用的進階技巧。請你審核下面筆記&#xff0c;檢查是否有過時的內容&#xff0c;如有請進行替換&#xff0c;確保其符合現代化需求&#x…

使用MFC ActiveX開發KingScada控件(OCX)

最近有個需求&#xff0c;要在KingScada上面開發一個控件。 原來是用的WinCC&#xff0c;WinCC本身是支持調用.net控件&#xff0c;就是winform控件的&#xff0c;winform控件開發簡單&#xff0c;相對功能也更豐富。奈何WinCC不是國產的。 話說KingScada&#xff0c;國產組態軟…

QScrollArea 內部滾動條 QSS 樣式失效問題及解決方案

在使用 Qt 進行 UI 開發時,我們經常希望通過 QSS(Qt Style Sheets)自定義控件的外觀,比如為 QScrollArea 的內部滾動條設置特定的樣式。然而,有開發者遇到了這樣的問題:在 UI 設計器中預覽 QSS 顯示效果正常,但程序運行時卻顯示為系統默認樣式。經過反復測試和調試,最終…

使用OpenSceneGraph生成3D數據格式文件

OpenSceneGraph (OSG) 提供了多種方式來生成和導出3D數據格式文件。以下是詳細的生成方法和示例代碼&#xff1a; 一、基本文件生成方法 1. 使用osgDB::writeNodeFile函數 這是最直接的生成方式&#xff0c;支持多種格式&#xff1a; #include <osgDB/WriteFile>osg:…

JMeter接口性能測試從入門到精通

前言&#xff1a; 本文主要介紹了如何利用jmter進行接口的性能測試 1.在測試計劃中添加線程組 1.1.線程組界面中元素含義 如果點擊循環次數為永遠&#xff1a; 2.添加HTTP取樣器 2.1.填寫登錄接口的各個參數 2.2.在線程組下面增加查看結果樹 請求成功的情況&#xff1a; 請求…

C++抽卡模擬器

近日在學校無聊&#xff0c;寫了個抽卡模擬器供大家娛樂。 代碼實現以下功能&#xff1a;抽卡界面&#xff0c;抽卡判定、動畫播放、存檔。 1.抽卡界面及判定 技術有限&#xff0c;不可能做的和原神一樣精致。代碼如下&#xff08;注&#xff1a;這不是完整代碼&#xff0c;…

詳解相機的內參和外參,以及內外參的標定方法

1 四個坐標系 要想深入搞清楚相機的內參和外參含義&#xff0c; 首先得清楚以下4個坐標系的定義&#xff1a; 世界坐標系&#xff1a; 名字看著很唬人&#xff0c; 其實沒什么大不了的&#xff0c; 這個就是你自己定義的某一個坐標系。 比如&#xff0c; 你把房間的某一個點定…

學透Spring Boot — 011. 一篇文章學會Spring Test

系列文章目錄 這是學透Spring Boot的第11篇文章。更多系列文章請關注 CSDN postnull 用戶的專欄 文章目錄 系列文章目錄Spring Test的依賴Spring Test的核心功能SpringBootTest 加載Spring上下文依賴注入有問題時Spring配置有問題時 WebMvcTest 測試Web層&#xff08;Controll…

Mysql 數據庫編程技術01

一、數據庫基礎 1.1 認識數據庫 為什么學習數據庫 瞬時數據&#xff1a;比如內存中的數據&#xff0c;是不能永久保存的。持久化數據&#xff1a;比如持久化至數據庫中或者文檔中&#xff0c;能夠長久保存。 數據庫是“按照數據結構來組織、存儲和管理數據的倉庫”。是一個長…

新一代AI架構實踐:數字大腦AI+智能調度MCP+領域執行APP的黃金金字塔體系

新一代AI架構實踐&#xff1a;數字大腦智能調度領域執行的黃金金字塔體系 一、架構本質的三層穿透性認知 1.1 核心范式轉變&#xff08;CPS理論升級&#xff09; 傳統算法架構&#xff1a;數據驅動 → 特征工程 → 模型訓練 → 業務應用 新一代AI架構&#xff1a;物理規律建…

macOS可視化桌面配置docker加速器

macOS可視化桌面配置docker加速器 在鏡像settings->docker Engine改為國內鏡像修改為國內鏡像重啟docker(可視化界面啟動或者使用命令行)使用命令重啟可視化界面重啟 在鏡像settings->docker Engine改為國內鏡像 修改為國內鏡像 {"registry-mirrors": ["…

Nginx 基礎使用(2025)

一、Nginx目錄結構 [rootlocalhost ~]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp # POST 大文件暫存目錄 ├── conf # Nginx所有配置文件的目錄 │ ├── fastcgi.conf # fastcgi相…

用spring-webmvc包實現AI(Deepseek)事件流(SSE)推送

前后端&#xff1a; Spring Boot Angular spring-webmvc-5.2.2包 代碼片段如下&#xff1a; 控制層&#xff1a; GetMapping(value "/realtime/page/ai/sse", produces MediaType.TEXT_EVENT_STREAM_VALUE)ApiOperation(value "獲取告警記錄進行AI分析…

基于Python的招聘推薦數據可視化分析系統

【Python】基于Python的招聘推薦數據可視化分析系統&#xff08;完整系統源碼開發筆記詳細部署教程&#xff09;? 目錄 一、項目簡介二、項目界面展示三、項目視頻展示 一、項目簡介 &#x1f680;&#x1f31f; 基于Python的招聘推薦數據可視化分析系統&#xff01;&#x1…

使用注解開發springMVC

引言 在學習過第一個springMVC項目建造過后&#xff0c;讓我們直接進入真實開發中所必需的注解開發&#xff0c; 是何等的簡潔高效&#xff01;&#xff01; 注&#xff1a;由于Maven可能存在資源過濾的問題&#xff0c;在maven依賴中加入 <build><resources>&l…