国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

在Unity中如何在動畫結(jié)束時改變狀態(tài)

這篇具有很好參考價值的文章主要介紹了在Unity中如何在動畫結(jié)束時改變狀態(tài)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

在Unity中,可以通過Animator組件來控制游戲?qū)ο蟮膭赢嫚顟B(tài)。當(dāng)動畫播放結(jié)束后,可以通過以下兩種方式來觸發(fā)狀態(tài)的改變:

1. 使用Animation Events:Animation Events是在動畫播放過程中觸發(fā)特定事件的機(jī)制??梢栽趧赢嫾糨嬛刑砑覣nimation Events,并在事件中調(diào)用腳本中的函數(shù)來改變狀態(tài)。

具體步驟如下:

- 在動畫剪輯的時間軸上選擇需要添加事件的時間點(diǎn)。
- 在Animation Events窗口中點(diǎn)擊“Add Event”按鈕,然后指定事件的名稱和調(diào)用的函數(shù)。
- 在腳本中實(shí)現(xiàn)對應(yīng)的函數(shù),在函數(shù)中改變游戲?qū)ο蟮臓顟B(tài)。

2. 使用腳本控制:在腳本中可以監(jiān)聽動畫狀態(tài)的改變事件,從而在動畫播放結(jié)束后執(zhí)行特定的操作。

具體步驟如下:

- 在腳本中獲取Animator組件的引用。
- 使用Animator的GetCurrentAnimatorStateInfo方法獲取當(dāng)前動畫狀態(tài)的信息。
- 在Update方法中檢查動畫狀態(tài)是否已經(jīng)結(jié)束,如果已經(jīng)結(jié)束,則執(zhí)行特定的操作,例如改變游戲?qū)ο蟮臓顟B(tài)。下面是一個示例代碼,通過監(jiān)聽Animator的動畫狀態(tài)改變事件,在動畫播放結(jié)束后改變游戲?qū)ο蟮臓顟B(tài):
?

using UnityEngine;

public class AnimController : MonoBehaviour
{
? ? private Animator anim;

? ? void Start()
? ? {
? ? ? ? anim = GetComponent<Animator>();
? ? ? ? anim.speed = 1.0f; ?// 設(shè)置動畫播放速度為正常速度
? ? }

? ? void OnEnable()
? ? {
? ? ? ? // 注冊動畫狀態(tài)改變事件的監(jiān)聽函數(shù)
? ? ? ? anim = GetComponent<Animator>();
? ? ? ? anim.Play("Idle"); ?// 播放Idle動畫
? ? ? ? anim.GetCurrentAnimatorStateInfo(0).normalizedTime = 0f; ?// 重置動畫播放時間
? ? ? ? anim.speed = 1.0f; ?// 設(shè)置動畫播放速度為正常速度
? ? ? ? anim.SetBool("isPlaying", true);
? ? ? ? anim.SetBool("isOver", false);
? ? ? ? anim.GetCurrentAnimatorStateInfo(0).speedMultiplier = 1.0f; // 設(shè)置動畫播放速度為正常速度
? ? ? ? anim.Play("Idle"); ?// 播放Idle動畫
? ? }

? ? void OnDisable()
? ? {
? ? ? ? // 取消動畫狀態(tài)改變事件的監(jiān)聽函數(shù)
? ? ? ? anim.SetBool("isPlaying", false);
? ? ? ? anim.SetBool("isOver", true);
? ? }

? ? void Update()
? ? {
? ? ? ? // 檢查動畫狀態(tài)是否已經(jīng)結(jié)束
? ? ? ? AnimatorStateInfo stateInfo = anim.GetCurrentAnimatorStateInfo(0);
? ? ? ? if (stateInfo.normalizedTime >= 1.0f && !anim.IsInTransition(0))
? ? ? ? {
? ? ? ? ? ? // 動畫已經(jīng)結(jié)束,執(zhí)行特定的操作,例如改變游戲?qū)ο蟮臓顟B(tài)
? ? ? ? ? ? anim.SetBool("isPlaying", false);
? ? ? ? ? ? anim.SetBool("isOver", true);
? ? ? ? }
? ? }
}

在上面的示例代碼中,OnEnable函數(shù)和OnDisable函數(shù)分別在組件啟用和禁用時被調(diào)用。在OnEnable函數(shù)中,注冊動畫狀態(tài)改變事件的監(jiān)聽函數(shù),并播放Idle動畫。在OnDisable函數(shù)中,取消動畫狀態(tài)改變事件的監(jiān)聽函數(shù),并設(shè)置游戲?qū)ο蟮臓顟B(tài)為動畫已經(jīng)結(jié)束。

在Update函數(shù)中,獲取當(dāng)前動畫狀態(tài)的信息,并檢查動畫是否已經(jīng)結(jié)束。如果動畫已經(jīng)結(jié)束,則執(zhí)行特定的操作,例如改變游戲?qū)ο蟮臓顟B(tài)。在示例代碼中,當(dāng)動畫結(jié)束時,將isPlaying狀態(tài)設(shè)為false,將isOver狀態(tài)設(shè)為true,從而改變游戲?qū)ο蟮臓顟B(tài)。文章來源地址http://www.zghlxwxcb.cn/news/detail-695680.html

到了這里,關(guān)于在Unity中如何在動畫結(jié)束時改變狀態(tài)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Unity的VideoPlayer視頻播放結(jié)束觸發(fā)邏輯

    Unity的VideoPlayer視頻播放結(jié)束觸發(fā)邏輯

    我在之前的項(xiàng)目中,有許多項(xiàng)目用到了VideoPlayer視頻播放組件,其中有很多需求都是視頻播放結(jié)束后調(diào)用一個方法,比如說跳轉(zhuǎn)場景、轉(zhuǎn)換視頻等等。我使用的Unity2017的版本都是在Update檢測視頻的幀數(shù),在視頻播放結(jié)束是觸發(fā)方法,但是這種方法貌似在2017以上的版本就不太好

    2024年02月12日
    瀏覽(37)
  • Unity 關(guān)于聲音(AudioSource)的播放、結(jié)束、暫停、繼續(xù)、聲音大小

    Unity 關(guān)于聲音(AudioSource)的播放、結(jié)束、暫停、繼續(xù)、聲音大小

    ????????在Unity開發(fā)的過程中用到聲音(AudioSource)實(shí)現(xiàn)一些聲音的效果是比不可少的 接下來看看關(guān)于聲音(AudioSource)的內(nèi)容吧 ???????? 截圖的時候忘記了 那Volume是調(diào)節(jié)聲音大小的0-1? ?0表示沒有聲音,1表示完全音量?(懶得再截圖了) 聲音(AudioSource)的播放、結(jié)

    2024年02月11日
    瀏覽(30)
  • Unity點(diǎn)擊按鈕結(jié)束運(yùn)行和退出游戲

    省流:完整代碼在底部 1、定義方法Exit 2、創(chuàng)建按鈕,將腳本掛載到按鈕上,添加按鈕單擊事件 完整代碼

    2024年02月04日
    瀏覽(26)
  • 【unity之IMGUI實(shí)踐】游戲結(jié)束流程封裝實(shí)現(xiàn)【七】

    【unity之IMGUI實(shí)踐】游戲結(jié)束流程封裝實(shí)現(xiàn)【七】

    ?????個人主頁 :@元宇宙-秩沅 ????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專欄 : unityUI專題篇 ??? ??????:步驟實(shí)現(xiàn) 1.坐標(biāo)三個轉(zhuǎn)化 2.GUI的原點(diǎn)和屏幕的原點(diǎn) 3.結(jié)構(gòu)體的特點(diǎn)回顧——涉及Rect_結(jié)構(gòu)體類型 4.血條的

    2024年02月14日
    瀏覽(25)
  • Unity游戲開發(fā)之游戲動畫(Unity動畫系統(tǒng))

    Unity游戲開發(fā)之游戲動畫(Unity動畫系統(tǒng))

    Unity動畫系統(tǒng)分為 動畫片段 Animation Clip: 動畫資源,與模型無關(guān) 動畫狀態(tài)機(jī) Animator Controller:幫助我們跟蹤當(dāng)前動畫的播放狀態(tài),并且根據(jù)設(shè)置覺得如何切換動畫片段 動畫組件 Animator Component:玩家角色需要播放動畫功能時,需要動畫組件,將游戲?qū)ο笮枰膭赢嫚顟B(tài)機(jī)(以

    2024年02月13日
    瀏覽(57)
  • 【Unity學(xué)習(xí)】Unity GetCurrentAnimatorStateInfo方法判斷動畫播放

    #好記憶不如爛筆頭# 通過normalizedTime的來判斷動畫播放是否完成。這里是一個爆炸動畫,爆炸結(jié)束后,動畫消失。配合一個對象池管理器使用。

    2024年02月11日
    瀏覽(23)
  • 【Unity3D游戲魔坦之爭】游戲結(jié)束流程封裝實(shí)現(xiàn)【七】

    【Unity3D游戲魔坦之爭】游戲結(jié)束流程封裝實(shí)現(xiàn)【七】

    ?????個人主頁 :@元宇宙-秩沅 ????? hallo 歡迎 點(diǎn)贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 秩沅 原創(chuàng) ????? 收錄于專欄 : unityUI專題篇 ??? ??????:步驟實(shí)現(xiàn) 1.坐標(biāo)三個轉(zhuǎn)化 2.GUI的原點(diǎn)和屏幕的原點(diǎn) 3.結(jié)構(gòu)體的特點(diǎn)回顧——涉及Rect_結(jié)構(gòu)體類型 4.血條的

    2024年02月11日
    瀏覽(52)
  • 使用Unity按鈕控制動畫播放

    在Unity中,您可以使用按鈕來控制動畫的播放。這樣,您可以根據(jù)用戶的操作在游戲或應(yīng)用程序中觸發(fā)特定的動畫效果。下面我將為您提供一些示例代碼,以便您了解如何在Unity中實(shí)現(xiàn)這一功能。 首先,讓我們創(chuàng)建一個簡單的場景,包含一個按鈕和一個需要控制的動畫對象。

    2024年02月03日
    瀏覽(73)
  • unity動畫狀態(tài)機(jī)

    動畫狀態(tài)機(jī)(Animation State Machine)是Unity中用于控制動畫狀態(tài)轉(zhuǎn)換的工具,它由多個狀態(tài)(State)和轉(zhuǎn)換(Transition)組成,可以通過狀態(tài)轉(zhuǎn)換來控制動畫的播放行為。 在動畫狀態(tài)機(jī)中,每個狀態(tài)都代表了一個動畫片段(Animation Clip),可以設(shè)置動畫片段的播放速度、循環(huán)模式、

    2024年02月07日
    瀏覽(16)
  • Unity Animator獲取當(dāng)前播放動畫片段

    Animator獲取當(dāng)前播放片段,獲取錯誤,跟當(dāng)前播放的片段不一致的原因。 一般使用下面API,獲取當(dāng)前動畫機(jī)播放片段: 這里有一個機(jī)制,如果上一句代碼是播放一個動畫片段,下一句代碼立即去獲取當(dāng)前播放片段信息,是獲取不到的,需要等待幾十ms的延遲,才能正確獲取到

    2024年02月12日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包