Unity5使用所遇難點及解決方案(基於與unity4的比較)(二.動作對象)

一.碰撞器

作用:以物理方式對網格提供一種碰撞檢測,同時也作爲一種觸發事件或反應的手段。
包括:capsule,sphere,box,mesh,wheel等。
  mesh collider是一種不規則的碰撞器,是根據設定的mesh來構建碰撞器,優點在於能完美得契合對象,但是消耗很大。這種碰撞器可以在導入對象的時候,選中generate colliders,點擊apply,就直接生成一個mesh collider在將來使用的實例對象中 ,而對於已經使用了的實例對象,可以點擊revert來更新設置。(存在一些導入對象無法用這種方式來生成,原因未解。。但是可以直接給實例對象添加一個mesh collider組件,並指定相應的mesh即可)。
  由於代價高昂以及絕大多數對象碰撞器需求很簡單,所以多數情況採用box,capsule,sphere等簡單規則的碰撞器來組合成複雜的形狀來滿足碰撞需求。
  collider的另一個作用在於用做觸發事件,如光標拾取等。
  一個對象只能有一個碰撞器,這就需要使用層次結構,即一組各自帶有碰撞器的對象,將其與實際對象放在一組,而之後進行對組的操作。

二.觸發動畫

var theparent:GameObject;
var aniClip:AnimationClip;//AnimationClip 動畫剪輯類 

function OnMouseDown(){//鼠標點擊觸發事件
  print(name+"picked");//name屬性 使用該腳本對象的
  //theparent.GetComponent.<Animation>().Play();//只有legacy有Animation組件
  theparent.GetComponent.<Animation>().Play(aniClip.name);//需要指定動畫剪輯的名字
}

//該段代碼可以指定一個對象觸發指定的動畫,而觸發方式是點擊使用該腳本的對象。

三.聲音音效

  unity支持多種聲音文件,包括

  • .wav(WAV爲微軟公司(Microsoft)開發的一種聲音文件格式,WAV是最接近無損的音樂格式,所以文件大小相對也比較大),.
  • mp3(MP3是一種音頻壓縮技術,其全稱是動態影像專家壓縮標準音頻層面3(Moving Picture Experts Group Audio Layer III),簡稱爲MP3。它被設計用來大幅度地降低音頻數據量。MPEG制定的壓縮標準)
  • .aif(AIF/AIFF是音頻交換文件格式(Audio Interchange File Format)的英文縮寫,是Apple公司開發的一種聲音文件格式)
  • .ogg(Ogg全稱是OGGVobis(oggVorbis)是一種音頻壓縮格式,類似於MP3等的音樂格式。Ogg是完全免費、開放和沒有專利限制的。).

      添加一個音效,需要兩個組件。首先需要有一個對象攜帶audio Listener,在一個場景中只能有一個audio listener,之後可以在各個對象上添加audio source。這樣listener就可以接收source的聲音。
     在audio source中可以設置包括如下:
     

  • udio Clip(聲音剪輯): 也可以叫聲音片段,選取聲音文件
  • Mute:是否禁音
  • Bypass Effects:忽略音效
  • Play On Awake(喚起時播放): 如果勾選這個,那麼當First Person Controller被加載到遊戲場景中時音樂就會自動播放。
  • Loop:是否循環
  • Priority(優先級): 當遊戲裏同時播放的音樂數量太多時,優先級低的音樂可能不會被播放,調整優先級可以防止背景音樂這種重要的音樂被忽略。
  • Volume:音量
  • Pitch(音高):通過加速播放實現的音高調整,也是幾倍速的意思
  • stereo pan:在2D聲音時有效,從-1到1來調整左右聲道的比例。
  • spatial blend:從2D到3D的過渡。
  • reverb zone mix:混響效果的比例。
  • 3D Sound Setting(3D聲音設置):3D效果時有效,包括以下幾條
  • Doppler Level(多普勒效應等級):多普勒效應,就是會隨着listener的移動速度來影響聽到的聲音的頻率
  • Volume RollOff(音量過渡模式) :當listener從遠處靠近聲音源的過程中,音量的漸變方式。包括: 1、Logarithmic Rolloff(對數過渡模式) 2、Linear Rolloff(線性過渡模式) 3、Custom Rolloff(自定義過渡模式) 。
  • max diatance:聲音傳播最遠距離。
  • min distance:聲音傳播最近距離.
  • 根據以上三個設置會產生一個座標圖,橫座標指listener與audio的距離,縱座標指音量大小,中間是這兩個的函數,或者對數,或者線性,或者自己拖拽生成自定義函數圖像。
  • 注意:一定要注意listener是在哪裏,應該使之在控制的對象上,即使你是在製作第三人稱遊戲,也不應該放在攝像機上,否則因爲攝像機始終在斜上方看着對象,使你體驗的聲音就不會是第一人稱的了,會導致沒有代入感。

    使用腳本控制聲音播放:

  if(GetComponent.<AudioSource>()){
   GetComponent.<AudioSource>().Play();
  }
 //GetComponent.<AudioSource>().Play();播放對象的AudioSource組件的聲音剪輯

 //優化版
yield WaitForSeconds(audiodelay);//yield 暫停一幀 yield WaitForSeconds(audiodelay); 暫停audiodelay幀
GetComponent.<AudioSource>().PlayOneShot(auClip);//GetComponent.<AudioSource>().PlayOneShot(auClip);播放對象的選中的的聲音剪輯,這樣啓動的聲音彼此不會影響,會同時響起

//再優版
 GetComponent.<AudioSource>().clip=auClip;//這樣會改變默認音頻,而不是啓動多個音頻
   GetComponent.<AudioSource>().PlayDelayed(audiodelay);
  }

四.unity自帶的動畫視圖——自制簡易動畫

給一個對象添加animation組件之後可以使用unity自帶的動畫視圖來給該對象自制動畫。
window—>animation使用動畫視圖。
該視圖包括以下幾點使用區域:
這裏寫圖片描述
使用add propert,在該面板選擇對象的各個屬性。
使用導航中的紅色按鈕進入編輯動畫,中間的開始按鈕播放當前動畫。
使用右上角切換當前編輯的幀數。
這裏寫圖片描述
使用curves視圖(在左下角調整),可以調整屬性的變化曲線。
調整的時候,首先先在各個幀添加節點add key(快捷鍵K),可以選擇需要的屬性添加。在當前幀可以在scene中調整對象的狀態,會自動記錄在當前幀。然後再每個節點處可以調整節點的左右切線,包括free(自定義,使用besizer曲線手柄調整兩個節點中間的曲線),constant(常量直線),linear(線性勻速增加)。
使用滾輪或F,A等快捷鍵可以縮放視圖。

注意:unity5新增的generic體系下和legacy體系下製作出來的動畫是不能夠混用的。製作時一定要確認對象是哪種動畫系統,製作完成後再採用相應的方法才能展示動畫。如果是generic,就需要使用anivator組件,如果是legacy,就可以使用animation組件。兩種動畫文件雖然都是.anim,但是在unity中Inspector會顯示不同的視圖。

對於其他屬性的使用方面,具體的情況會有不同的動畫形式,這裏不做太多測試。下面給出一個對alpha的動畫設置的解釋:在animation中添加屬性嗎material.color,因爲透明度是通過材質體現的,將曲線設置爲如下的形式的話,就會隨時間有一個在60幀之後從1到0的變化,逐漸透明。
這裏寫圖片描述
需要注意的是,光是修改alpha還不足以修改透明度,仍然需要使用帶有alpha通道的shader,普通的着色器不足以體現透明度,所以要使用transparent族的shader。這樣即可有一個淡出的動畫效果。但是注意雖然不可見,但實際仍然在不停得進行渲染,消耗幀速率。

注:導入的動畫是不能再編輯的,但是可以預覽。要想修改,只能編輯其副本。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章