如何用unity做八分音符醬

總所周知温峭,八分音符醬是利用設(shè)備錄入的聲音大小來判斷行走和跳躍攻泼,所以我們利用五個部分來做一個簡易版的八分船來醬”

一揖赴、獲取電腦/手機(jī)的麥克風(fēng)

1雪位、創(chuàng)建一個空物體竭钝,并自主命名(我命名為MIC),用來承擔(dān)麥克的檢測雹洗,并在MIC中添加C#腳本(同樣自主命名)

2香罐、在MIC腳本中定義一個叫“volume”的變量來檢測音量的大小

public float volume

3、獲取到設(shè)備的名字

string device

4队伟、利用AudioClip以儲存聲音信息

AudioClip mic


Unity官網(wǎng)API

5穴吹、在start方法中獲取設(shè)備幽勒,且調(diào)用方法錄制音頻

device = Microphone.devices[1]

mic = Microphone.Start(device, true, 999, 44100)

*若有多個收聲設(shè)備嗜侮,Microphone.devices[]中括號中若是0則是默認(rèn)麥克,1或其他數(shù)則為其他外設(shè)麥克

**mic = Microphone.Start(device, true, 999, 44100)則是直接利用官網(wǎng)API的代碼中間的999則是音頻錄制時間,可以自行調(diào)節(jié),44100則是音頻采樣率

6锈颗、定義一個float方法顷霹,以來返回音量信息

float GetVolume()

{


????float MVolume = 0;

????float[] volumeData = new float[128];

????int offset = Microphone.GetPosition(device) - 128 + 1;//從哪里開始采樣(因為值不能是0,所以后面要單獨+1)

????if (offset < 0)

????{

????????return 0;

????}

????micRecord.GetData(volumeData,offset);

????for (int i = 0; i < 128; i++)//一個簡單的for循環(huán)

????{

????????float tempM = volumeData[i] * volumeData[i] * volumeData[i];//根據(jù)麥克風(fēng)的實際情況* volumeData[i]這個值(若代碼和我一樣击吱,但是麥克風(fēng)收音時還是很容易到達(dá)0.9幾那就在后面再重復(fù)* volumeData[i])

????????if (M_Volume < tempM)

????????{

????????????M_Volume = tempM;

????????}

????}

????return M_Volume;

}

7淋淀、在Update中設(shè)定

volume = GetVolume

如此,電腦的unity就可以接受麥克的聲音了


聲音組件代碼

二覆醇、設(shè)計游戲組件

(我這里沒有2D素材所以下列操作都基于3D朵纷,當(dāng)然,我也會將2D操作方法永脓,內(nèi)容都是大同小異袍辞,如果你有2D素材也可以試一下)

1、插入一個球體作為主角常摧,并更改tagPlayer搅吁,添加剛體(Rigidbody)組件讓小球有重力,再添加move代碼

2落午、插入一個長方體作為地板谎懦,可以Ctrl+D多做幾個

三、Player的移動

1溃斋、定義float變量命名為volume界拦,且之前MIC中的

MIC代碼:public float volume;改為——》public?static float volume;(仔細(xì)看上面那張圖,有寫)

move代碼:public float volume;

3梗劫、獲取剛體寞奸,定義跳躍高度和移動速度

????Rigidbody rig;

? ? public float jump;

? ? public float speed;

4、在start代碼中將剛體實例化

rig = GetComponent<Rigidbody>();

5在跳、定義跳(Jump)和移動(Move)的方法

void Jump()

? ? {

? ? ? ? rig.AddForce(Vector2.up * jump * volume);

? ? }

? ? void Move()

? ? {

? ? ? ? rig.AddForce(Vector2.right * 10);

? ? }


6枪萄、在Update中調(diào)用并設(shè)計(聲音在0.1~0.2之間只能移動猫妙,而超過0.2則可跳躍)

volume = mic.volume;

? ? ? ? if (volume > 0.1)

? ? ? ? {

? ? ? ? ? ? Move();

? ? ? ? ? ? if (rig.velocity.x > speed)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? rig.velocity = new Vector2(speed, rig.velocity.y);

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? if (volume > 0.2)

? ? ? ? {

? ? ? ? ? ? if (Time.time - tempTime > 2.5f)//CD時間大于2.5秒時

? ? ? ? ? ? {

? ? ? ? ? ? ? ? Jump();//可以跳躍

? ? ? ? ? ? ? ? tempTime = Time.time;//CD清零

? ? ? ? ? ? }

? ? ? ? }

四瓷翻、死亡線

死亡線比較簡單,就一個碰撞體和一個腳本來檢測碰撞

1割坠、插入一個空物體齐帚,添加一個3D碰撞箱(如果有2D素材的話2D碰撞體也可以)

*2D碰撞箱要勾選Is Trigger選項


Is Trigger選項

2、添加一個腳本命名為DEAD

3D

private void OnCollisionEnter(Collision collision)

? ? {

? ? ? ? Dead.SetActive(true);

? ? }

我這里是做了一個死亡的場景彼哼,我會在第五步講解

2D

private void OnTriggerEnter2D(Collider2D collision)

? ?{

? ? ? if (collision.gameObject.tag == "Player")

? ? ? ?{

? ? ? ? ? ? Dead.SetActive(true);

? ? ? ? }

? ? }

*如果不想做UI可以直接將

?Dead.SetActive(true);換成——》SceneManager.LoadScene(0);

就可以直接重啟游戲

五对妄、簡單的UI和攝像機(jī)的跟蹤

1、攝像頭跟蹤

我們可以利用Unity自帶的cinemachine組件

Window——>Package Manager——>All packages——>Cinemachine下的Import

然后頂部功能條上就會出現(xiàn)cinemachine組件

我們選擇create 2D camera

如此在項目欄中會出現(xiàn)CM vcam1的一個攝像頭敢朱,咱們可以微做調(diào)整

Follow中指定項目為Player

我的圖片如下(僅供參考)


游戲界面
攝像頭數(shù)據(jù)

2剪菱、簡單的UI

插入UI中的Panel摩瞎,調(diào)成自己喜歡的亞子,并插入文字和按鈕

將組件的勾去掉孝常,讓組件處于false狀態(tài)


false

將OVER UI拖拽到死亡線的Dead代碼中的Dead賦值即可旗们,這樣,當(dāng)小球(船來)碰到死亡線的碰撞箱時就會彈出OVER這個UI

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末构灸,一起剝皮案震驚了整個濱河市上渴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌喜颁,老刑警劉巖稠氮,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異半开,居然都是意外死亡括袒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門稿茉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锹锰,“玉大人,你說我怎么就攤上這事漓库∈鸦郏” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵渺蒿,是天一觀的道長痢士。 經(jīng)常有香客問我,道長茂装,這世上最難降的妖魔是什么怠蹂? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮少态,結(jié)果婚禮上城侧,老公的妹妹穿的比我還像新娘。我一直安慰自己彼妻,他們只是感情好嫌佑,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著侨歉,像睡著了一般屋摇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上幽邓,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天炮温,我揣著相機(jī)與錄音,去河邊找鬼牵舵。 笑死柒啤,一個胖子當(dāng)著我的面吹牛倦挂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播白修,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼妒峦,長吁一口氣:“原來是場噩夢啊……” “哼重斑!你這毒婦竟也來了兵睛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤窥浪,失蹤者是張志新(化名)和其女友劉穎祖很,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漾脂,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡假颇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了骨稿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笨鸡。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖坦冠,靈堂內(nèi)的尸體忽然破棺而出形耗,到底是詐尸還是另有隱情,我是刑警寧澤辙浑,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布激涤,位于F島的核電站,受9級特大地震影響判呕,放射性物質(zhì)發(fā)生泄漏倦踢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一侠草、第九天 我趴在偏房一處隱蔽的房頂上張望辱挥。 院中可真熱鬧,春花似錦边涕、人聲如沸般贼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哼蛆。三九已至,卻和暖如春霞赫,著一層夾襖步出監(jiān)牢的瞬間腮介,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工端衰, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留叠洗,地道東北人甘改。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像灭抑,于是被迫代替她去往敵國和親十艾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355