1. 程式人生 > >AR 恐龍博物館四(萌寵小恐成長日記之咿呀學語)

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