AR 恐龍博物館四(萌寵小恐成長日記之咿呀學語)
遊戲下載地址:http://download.csdn.net/detail/nicolelili1/9907607
1、需要在英文輸入法下執行,攝像頭需要由上向下傾斜
2、設定解析度的按鍵
Y:設定解析度為3840x1160
I:設定解析度為1600x1024
O:設定解析度為1600x900
P:設定解析度為1366x768
K:設定解析度為1280x960
L:設定解析度為1280x800
3、退出程式的按鍵
Esc:鍵退出程式
4、使用方法
程式執行後,恐龍在螢幕中,執行待機動畫
R:恐龍尖叫
X:恐龍低頭到處聞
C:恐龍低頭吃東西
E:向左轉
Q:向右轉
WASD:恐龍前後左右轉動
播放的動畫結束後繼續進入到待機動畫
一
2、將音訊檔案拖動到Assets中
二、使用第一種方法,在播放動畫的函式中播放聞東西的聲音
1、修改指令碼檔案的程式碼
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Anim_Manager : MonoBehaviour { public Animator V_Ani; //動畫物件 public GameObject V_Obj; //恐龍物件 public AudioClip Smell_Clip; //聞東西的聲音 public AudioClip Eate_Clip; //吃東西的聲音 void Start () { } void Update() { Eat(); Smell(); Bark(); TranslatePosition(); } private void Eat() { //按下C鍵吃東西 if (Input.GetKey(KeyCode.C)) { V_Ani.SetTrigger("Eat"); } } private void Smell() { //按下X鍵聞東西 if (Input.GetKey(KeyCode.X)) { V_Ani.SetTrigger("Smell"); //給聲音源元件新增聞東西的聲音檔案 gameObject.GetComponent<AudioSource>().clip = Smell_Clip; //更改聲音播放的速度 gameObject.GetComponent<AudioSource>().pitch = 1.5f; //播放聲音源元件 gameObject.GetComponent<AudioSource>().Play(); } } private void Bark() { //只有在行走動畫的時候才有位移,解決同時按下R鍵才可以進行尖叫,解決聞東西、吃東西時同時尖叫的bug if (V_Ani.GetCurrentAnimatorStateInfo(0).IsName("Blend Tree")) { //按下R鍵尖叫 if (Input.GetKey(KeyCode.R)) { V_Ani.SetTrigger("Bark"); } } } private void TranslatePosition() { //將按下W、S鍵的引數值賦給這個引數FB V_Ani.SetFloat("FB", Input.GetAxis("Vertical")); //預設是WS鍵 V_Ani.SetFloat("LR", Input.GetAxis("Horizontal")); //預設是AD鍵 //只有在行走動畫的時候才有位移,解決同時按下C鍵和W、A、S、D任意一鍵時出現的邊吃東西四肢不動但是有位移滑行的bug if (V_Ani.GetCurrentAnimatorStateInfo(0).IsName("Blend Tree")) { //上下平移的速度 float translationFB = Input.GetAxis("Vertical") * 0.1f; //左右平移的速度 float translationLR = Input.GetAxis("Horizontal") * 0.1f; //恐龍行走的位移 V_Obj.transform.Translate(translationLR, 0, translationFB); } } }
2、將聞東西的聲音源元件賦給變數,並新增Audio Source元件
3、執行後當低頭聞東西的時候播放聲音
三、新增吃東西的聲音(使用第二種方法,設定一個播放聲音的函式,在動畫的播放軸上將聲音新增進去)
1、建立一個C#指令碼
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Audio_Ctrol : MonoBehaviour { public AudioClip Bark_Clip; // Use this for initialization void Start () { } // Update is called once per frame void Update () { } public void Au_Bark() { //給聲音源元件的音訊設定為尖叫聲音檔案 gameObject.GetComponent<AudioSource>().clip = Bark_Clip; //更改聲音播放的速度 gameObject.GetComponent<AudioSource>().pitch = 2.0f; //播放聲音源元件 gameObject.GetComponent<AudioSource>().Play(); } }
2、新增上指令碼,並給尖叫聲音源賦上聲音(必須新增到發出聲音源的物體上,此例中是恐龍尖叫,必須新增到恐龍上,否則沒有聲音)
3、在Project檢視中選中恐龍的.fbx檔案,在Inspector檢視中點選Animation標籤
4、選擇Bark動畫
5、在Events處點選最左側的按鈕,新增事件,
6、把尖叫的函式名貼上到Function處,在Object處新增函式所在的指令碼,然後點選Apply
7、執行後按下R鍵尖叫的同時發出尖叫聲,小恐終於學會說話了!!!
四、新增旋轉,並將指令碼新增到恐龍身上
1、指令碼程式碼
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Anim_Manager : MonoBehaviour {
public Animator V_Ani; //動畫物件
public GameObject V_Obj; //恐龍物件
public AudioClip Smell_Clip; //聞東西的聲音
void Start () {
}
void Update() {
Eat();
Smell();
Bark();
TranslatePosition();
Ro_Left();
Ro_Right();
}
private void Eat()
{
//按下C鍵吃東西
if (Input.GetKey(KeyCode.C))
{
V_Ani.SetTrigger("Eat");
}
}
private void Smell()
{
//按下X鍵聞東西
if (Input.GetKey(KeyCode.X))
{
V_Ani.SetTrigger("Smell");
//給聲音源元件新增聞東西的聲音檔案
gameObject.GetComponent<AudioSource>().clip = Smell_Clip;
//更改聲音播放的速度
gameObject.GetComponent<AudioSource>().pitch = 1.5f;
//播放聲音源元件
gameObject.GetComponent<AudioSource>().Play();
}
}
private void Bark()
{
//只有在行走動畫的時候才有位移,解決同時按下R鍵才可以進行尖叫,解決聞東西、吃東西時同時尖叫的bug
if (V_Ani.GetCurrentAnimatorStateInfo(0).IsName("Blend Tree"))
{
//按下R鍵尖叫
if (Input.GetKey(KeyCode.R))
{
V_Ani.SetTrigger("Bark");
}
}
}
private void TranslatePosition()
{
//將按下W、S鍵的引數值賦給這個引數FB
V_Ani.SetFloat("FB", Input.GetAxis("Vertical")); //預設是WS鍵
V_Ani.SetFloat("LR", Input.GetAxis("Horizontal")); //預設是AD鍵
//只有在行走動畫的時候才有位移,解決同時按下C鍵和W、A、S、D任意一鍵時出現的邊吃東西四肢不動但是有位移滑行的bug
if (V_Ani.GetCurrentAnimatorStateInfo(0).IsName("Blend Tree"))
{
//上下平移的速度
float translationFB = Input.GetAxis("Vertical") * 0.1f;
//左右平移的速度
float translationLR = Input.GetAxis("Horizontal") * 0.1f;
//恐龍行走的位移
V_Obj.transform.Translate(translationLR, 0, translationFB);
}
}
//向左旋轉
void Ro_Left()
{
if (Input.GetKey(KeyCode.Q))
{
transform.Rotate(0,-25*Time.deltaTime,0,Space.Self);
}
}
//向右旋轉
void Ro_Right()
{
if (Input.GetKey(KeyCode.E))
{
transform.Rotate(0, 25 * Time.deltaTime, 0, Space.Self);
}
}
}
2、給物體新增指令碼
3、執行後
初始位置
按下Q向左旋轉
按下E向右旋轉
這裡有顆糖,過來吃糖
苦嗎?誰讓你嚼碎了吃的?一口吞就不苦了,外面的皮是甜的。好了,再給你顆糖吃,這個裡外都是甜的。先聞一下,甜嗎?
好了,吃吧,沒騙你吧,真的是甜的
你這麼小,快點長大吧,那樣就不會被別人欺負了!
注:參考資料:http://edu.manew.com/course/216/learn#lesson/3259