U3D 动画帧事件问题
測(cè)試版本U3D5.4。
1,為一個(gè)模型導(dǎo)入外部動(dòng)畫。為動(dòng)畫剪輯attack在某幀添加event,事件為 public void OnAttackEvent(){},函數(shù)體不做任何事情。
結(jié)果發(fā)現(xiàn),在動(dòng)畫幀末尾添加事件,播放時(shí)兩個(gè)動(dòng)畫的過(guò)渡效果沒(méi)有了,去掉幀事件后正常過(guò)渡。
在動(dòng)畫集開(kāi)始處(不超過(guò)33%)設(shè)置幀事件,不影響動(dòng)畫的過(guò)渡。
看來(lái)U3D的幀事件相當(dāng)粗糙,不能精確的在動(dòng)畫集末尾幀添加事件而又不影響本動(dòng)畫集和下一動(dòng)畫集的過(guò)渡。
2,去掉has exit time,并在上面的幀事件中設(shè)置:?
using UnityEngine; using System.Collections; using UnityEditor;public class testAnimEvent : MonoBehaviour {Animator animator;int[] randArr = new int[10];int idx = 1;int idxLast;AudioSource[] attackSound;// Use this for initializationvoid Start () {animator = GetComponent<Animator> ();System.Random rand = new System.Random ((int)Time.time);randArr [0] = 0;for(int i=1; i<10; i++){randArr [i] = rand.Next (0, 10);Debug.Log (randArr [i]);}attackSound = GetComponents<AudioSource> ();}// Update is called once per framevoid Update () {}void OnAttackEvent(){int iSound = randArr [idxLast] > 4 ? 1 : 0; //播放當(dāng)前動(dòng)畫集的音效,注意idxLast attackSound[iSound].Play ();animator.SetInteger ("attackId", randArr[idx]);//設(shè)置下一個(gè)動(dòng)畫集(播放完本動(dòng)畫集后才會(huì)開(kāi)始播放下一動(dòng)畫集,因?yàn)橛衕as exit time)idxLast = idx;idx = (idx + 1) % 10;} }結(jié)果發(fā)現(xiàn)animator.SetInteger ("attackId", randArr[idx]);并不會(huì)立即打斷當(dāng)前播放而進(jìn)入下一個(gè)要求的動(dòng)畫集。它要等到本動(dòng)畫集播放完了才進(jìn)行切換。
3,復(fù)制Assets\Characters\ThirdPersonCharacter\Animation下的HumanoidRun.fbx到另一工程下,通過(guò)U3D察看此文件,發(fā)現(xiàn)不能用,如圖1,正常情況應(yīng)該如圖2。原來(lái)是沒(méi)考meta文件造成的,一般情況下meta文件沒(méi)什么用,這里卻例外了,可能這個(gè)文件有特殊性,不深究了。
?????????
圖1 圖2
4,不同人形模型間的動(dòng)畫可以通用,注意要在動(dòng)畫導(dǎo)入設(shè)置里rig頁(yè)設(shè)置為: Animation Type : Humaniod才行。
這是最簡(jiǎn)單的動(dòng)畫集復(fù)用。一個(gè)人形模型可以通過(guò)引用其它人形模型的AnimationController來(lái)直接播放不屬于自己的動(dòng)畫集和狀態(tài)機(jī),這就是動(dòng)畫集的retarget
5,為導(dǎo)入的動(dòng)畫使用curves :?這樣狀態(tài)機(jī)運(yùn)行時(shí)就會(huì)從曲線上采樣作為speed的值。還可以在腳本中通過(guò)animator.GetFloat("speed")來(lái)獲取任意時(shí)刻speed曲線上的值。這樣可以做許多事情。
?
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的U3D 动画帧事件问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【转】汇编 代码段数据段堆区栈区
- 下一篇: U3D杂记