1. 程式人生 > >在角色踢腿達到最高時執行一個操作及在子彈接連幾次集中統一個敵人時,敵人能即使重播受傷動畫

在角色踢腿達到最高時執行一個操作及在子彈接連幾次集中統一個敵人時,敵人能即使重播受傷動畫

一.先說第一個問題。
問題:有時我們需要控制在角色播放動畫的某一刻去執行某些操作,例如在主角揮刀到水平位置時,要建立一個揮刀特效。當角色踢腿達到最高時,要執行一下其他的操作等等
分析:這主要是控制動畫的執行過程,找到能控制動畫播放的屬性,同時檢視動畫播放到指定動作的時間,就可以執行上面要求的操作。
解決:我測試了當角色踢腿到最高位置時列印一次“檢測成功語句”;
在AnimatorStateInfo中有一個NormalizedTime屬性,它記錄著某一個動畫狀態單元在開始執行到當前位置的百分比。如果這個動畫單元是迴圈播放或是在播放完時保持狀態不切換,此時NormaliezdTime的值會大於1.使用該屬性乘以動畫的總幀數,那麼就會得出此時動畫走到了哪一幀,這樣跟預先設定好的動畫幀進行比較,大於該值時就認為退踢到了最高處,此時列印“檢測成功語句”;
如圖一:
在這裡插入圖片描述

下面是指令碼程式碼:
在這裡插入圖片描述
出了上述的主要過程意外其他的引數是為了實現更好的除錯效果,而不是必要的。
動畫狀態機的模式為:
在這裡插入圖片描述

執行結果為:
在這裡插入圖片描述

二.
問題:射擊類遊戲中,向一個敵人連續多次地射擊,動畫卻每次總是將受傷動畫播放完才重新開頭播放,這樣導致效果很不好,我希望的是,敵人在收到下一次的射擊時能夠立刻,結束當前的動畫播放,而從頭開始播放。
分析:一個動畫正在播放是沒有辦法讓他停止而再去重播,,所以不能再一個動畫單元上下功夫。
解決:在動畫控制器中建立兩個受傷動畫單元,hurt1,hurt2,再設定一個int型的引數count,使他自增。規定當count為奇數時播放hurt1,當count為偶數時為hurt2,取消動畫切換時的has exit time屬性,這樣在兩個動畫單元間就可以實現立刻切換的效果。
因為思路比較簡單就不再拉入demo了

相關推薦

角色踢腿達到最高執行一個操作子彈接連集中統一敵人敵人即使重播受傷動畫

一.先說第一個問題。 問題:有時我們需要控制在角色播放動畫的某一刻去執行某些操作,例如在主角揮刀到水平位置時,要建立一個揮刀特效。當角色踢腿達到最高時,要執行一下其他的操作等等 分析:這主要是控制動畫的執行過程,找到能控制動畫播放的屬性,同時檢視動畫播放到指定動

springboot 如何在退出應用執行操作

        每個SpringApplication都會向JVM註冊一個關閉鉤子(hook),以確保ApplicationContext在退出時正常關閉。 可以使用所有標準的Spring生命週期回撥(例如DisposableBean介面或@PreDestroy注解)。  

Mysql 插入資料存在執行update操作:ON DUPLICATE KEY UPDATE

-- 建立表:test: CREATE TABLE `test` (   `objId` int(10) NOT NULL,   `orgId` int(10) NOT NULL,   `objName` varchar(50) NOT NULL,   PRIMARY KE

Spring Boot應用程式在啟動執行一些操作的方法

如果想在生成物件時候完成某些初始化操作,而偏偏這些初始化操作又依賴於依賴注入,那麼就無法在建構函式中實現。為此,可以使用@PostConstruct註解一個方法來完成初始化,@PostConstruct註解的方法將會在依賴注入完成後被自動呼叫。 @PostConstruct是spring框架的註

ng-repeat在迭代最後一個元素執行一個方法

其實很簡單,直接程式碼。 //定義一個要repeat的陣列 $scope.lists = []; /** * 往這個陣列塞資料 */ for (var i = 0; i < 1000; i++) { $scope.lists.push('條目' + i)

MFC 編輯框輸出和執行操作UpdateData()函式報錯

很久沒有寫MFC,最近在寫MFC的時候遇到了很多問題,把這次遇見的問題及解決方法整理如下,以便下一次用的時候查閱。 編輯框輸出 編輯框輸出有多種方法,按照以前的方法在vs2010運用時居然沒有顯示,把這次的程式碼做為示例以便下次用時查閱。 CString str; str.Forma

IAR中使用struct強制對齊一個問題解決

最近在用IAR開發MSP430程式過程中發現了一個問題,具體描述是這樣的 首先定義了一個struct並強制1個位元組對齊 #pragma pack(push) //儲存對齊狀態 #pragma pack(1)//設定為4位元組對齊 typedef struct { ui

Socket通訊 一個伺服器對多客戶端延遲接受資訊的實現

實驗要求: 1.一個時間點,無論哪個基站有資料傳送,伺服器必須同時接收。不能延遲等待這個客戶端接收完畢再接收另一個客戶端; 2.客戶端不能關閉,一直連線,以防資料遺漏 知識點: 多執行緒 同時開啟多個任務,不用按照程式的執行順序來; 基本的程式碼如下: pack

判斷一個字串在另一個字串中出現了

// 判斷字串“mingrikejijavabu”中,字元“i”出現了幾次,並將結果輸出。 2 3 String str="mingrikejijavabu"; 4 5 //方法1:替換法 6

[Word]解決Word中執行輸入操作後面字符自動被刪除的問題

字符 位置 狀態 問題 找不到 輸入 自動 就會 題解 問題分析:這是由於當前輸入方式為“改寫”,在此方式下,如果某個位置處後面有其他字符,當在此位置執行輸入操作時,就會默認刪除其後的所有字符。 解決方案:Word窗口下邊緣狀態欄,找到“改寫”按鈕,點擊,使其切換為“插入”

一個DOM元素綁定多事件執行冒泡還是捕獲

msg 元素 .org tro code 常見 xxx == 添加 綁定在被點擊元素的事件是按照代碼順序發生,其他元素通過冒泡或者捕獲“感知”的事件,按照W3C的標準,先發生捕獲事件,後發生冒泡事件。所有事件的順序是:其他元素捕獲階段事件 -> 本元素代碼順序事件 -

一個在linux環境執行io操作的bug

process spa util art () stack 要求 throw module 今天項目有了一個奇葩的要求。。。是什麽呢 後臺上傳了視頻後,解析其中的時長,和預覽圖,並拼接在一起,然而,之東西並不是太麻煩,很快寫好了,在本地測試後也沒有問題,嗯,發布到測試環境後

CentOS 7在執行yum操作 報錯

conf earch x86_64 amp ror centos 7 -- cal ear CentOS 7在執行yum操作時, 報錯:Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6

當網站出現502,若重啟PHP成功,則執行如下操作 (Linux定時執行.php檔案)

問題:我的伺服器在一段時間的時候,執行幾百個網站時出現了502錯誤,通過我的分析,時php-fpm承受不了多個網站的壓力,就出現崩潰,那麼這是就需要在網站出現502時,重啟php-fpm解決(或者你可以選擇優化php-fpm的效能) 解決思路:當網站出現502時,若重啟PHP能成功,那麼就需要在

執行一個MapReduce應該監控些什麼

    執行一個MapReduce時,應該監控些什麼 前言        本文討論的是,在以Yarn做資源管理的叢集上如何監控一個MapReduce程式。 一、概述   &nbs

Android中實現延執行操作種方法

在Android開發中我們可能會有延時執行某個操作的需求,例如我們啟動應用的時候,一開始呈現的是一個引導頁面,過了兩三秒後,會自動跳轉到主介面。這就是一個延時操作。  下面是實現延時執行操作的幾種方法: 1.使用執行緒的休眠實現延時操作    new Thread() {

Spring:使用InitializingBean,DisposableBean介面實現在專案啟動/關閉執行操作

最近專案中有一個需求需要一個儲存過程不停的執行,但是儲存過程執行中如果出現異常,自動通知管理員會很麻煩。所以打算直接把呼叫儲存過程這步驟整合進Spring Boot專案中(這樣不論異常捕獲和郵件通知都相對簡單)。 於是考慮使用實現Spring的Initializ

使用docker映象執行一個容器的操作

操作主機必須安裝和執行docker,以公司192.168.0.206伺服器為例 先可用docker images指令羅列所有docker映象 檢視有哪些docker映象可用 [[email protected] Dockerfiles]# docker images REPOSITORY 

【peterli_xue的專欄】當我們處在一個舒服的領域我們就很難做出有重大意義的事;General George S. Patton曾說過的話:‘今日大力執行一個好的計劃遠比明日執行一個完美的計劃要好的多

當我們處在一個舒服的領域時,我們就很難做出有重大意義的事;General George S. Patton曾說過的話:‘今日大力執行一個好的計劃遠比明日執行一個完美的計劃要好的多...

C# 多執行操作介面使用Invoke與BeginInvoke的區別

Invoke方法的引數很簡單,一個委託,一個引數表(可選),而Invoke方法的主要功能就是幫助你在 UI執行緒(即建立控制元件的執行緒)上呼叫委託所指定的方法。Invoke方法首先檢查發出呼叫的執行緒(即當前執行緒)是不是UI執行緒,如果是,直接執行委託指向 的方法