創(chuàng)建游戲?qū)ο蠛徒M件

http://www.maiziedu.com/course/540/ 組件教程 prefabs教程http://www.maiziedu.com/course/642-9396/

我們前面講了很多的基礎(chǔ)知識(shí),最近一直很忙,很久沒(méi)出基礎(chǔ)系列的教程了。在今后的一段時(shí)間了我盡量擠出時(shí)間來(lái)將基礎(chǔ)系列的講解完。希望這套教程對(duì)那些初學(xué)者能起到一定的用處。同時(shí)自己也起到了溫故而知新的作用。 好了,廢話不多說(shuō)了,下面開(kāi)始介紹unity中的組件。unity3d的每一個(gè)物體的屬性都是一個(gè)一個(gè)的組件組成的,除了一些基本的組件之外,大部分組件都是可以添加和刪除的。我們添加了組件之后,他將會(huì)出現(xiàn)在inspector面板
我們可以在inspector面板中清楚的看到這個(gè)游戲物體所包含的所有組件Transfoem組件。控制物體的位置,方向和大小。sherecollider組件AI是一個(gè)腳本文件,在unity系統(tǒng)中也將他作為一個(gè)組件。 還有AudioSourde組件。聲音組件,可以給物體添加聲音。? 我們看下組件是怎樣添加和刪除的,新建一個(gè)游戲物體,選中該物體,點(diǎn)擊工具欄中的Component->physics->Rigidbody.

然后查看inspector面板,發(fā)現(xiàn)面板上多出一欄Rigidbody組件,這樣我們這個(gè)物體就添加后了一個(gè)重力組件。如果我們添加好了這個(gè)組件,然后像刪除掉這個(gè)組件不用了。這個(gè)操作起來(lái)非常簡(jiǎn)單,點(diǎn)擊組件右上角的按鈕,在下拉菜單中選擇RemoveComponent即可刪除該組件,如圖:

下面我們看下unity中那些組件 點(diǎn)擊菜單欄中的Component菜單項(xiàng),得到如圖的下拉菜單

Unity3D中的組件都包含在這個(gè)菜單里面我們來(lái)大致看下都有那些功能。Mesh:網(wǎng)格組件,3D網(wǎng)格是Unity中最重要的圖形元素。Effects:效果組件,各種視覺(jué)效果組件。Physics:物理組件,是unity中非常重要的一組組件,里面包裹我們經(jīng)常會(huì)用到的剛體和碰撞器。Navigation:導(dǎo)航組件,Audio:聲音組件。Rendering:渲染組件,這個(gè)組包括在游戲中渲染和界面元素的所有組件。光照和特定效果也包含在這個(gè)組。Scripts:腳本組件,還有就是我們?yōu)榱隧?xiàng)目制作需要,安裝的一些插件也會(huì)出現(xiàn)在改文件夾;在以后的章節(jié)中我們將對(duì)每一個(gè)組件進(jìn)行詳細(xì)的介紹。

上次對(duì)unity的組件進(jìn)行了一個(gè)概括的介紹,今天就介紹一下unity3d中的一組重要的組件,物理引擎組件。物理引擎就是在游戲中模擬真實(shí)的物理效果。什么是物理效果呢,比如在游戲中我們擊打一個(gè)物體,這個(gè)物體就會(huì)受到力的作用,當(dāng)物體受到擊打力之后產(chǎn)生的效果,就叫做物理效果。物理引擎就是實(shí)現(xiàn)這種效果的一個(gè)組件。如果沒(méi)有這個(gè)組件,我們就必須用大量的代碼來(lái)描述這種效果,現(xiàn)在加上這個(gè)組件之后,我們只需要設(shè)置一下參數(shù),就可以將這些復(fù)雜的效果模擬出來(lái),極大的減少了工作量。物理引擎中主要分為兩大塊,剛體和碰創(chuàng)器。我們今天先來(lái)看下剛體組件,剛體組件可以給物體添加一些常見(jiàn)的物理屬性,比如物體的質(zhì)量,摩擦力,碰創(chuàng)參數(shù)等等,這些屬性可用來(lái)真實(shí)的模擬物體在3D游戲世界中的一切行為。新創(chuàng)建的物體時(shí)不具備剛體組件的,下面我們加來(lái)看第一步,怎么給一個(gè)物體添加剛體組件首先創(chuàng)建一個(gè)場(chǎng)景,其中包括一個(gè)地面,三個(gè)GUBE。三個(gè)GUBE分別設(shè)置不同的顏色。以便區(qū)分,如圖:

選中紅色的cube然后在菜單欄中選擇Component->

hysics->Rigidbody如圖:

這樣一個(gè)剛體組件就添加完成了,運(yùn)行游戲看看有什么變化。我們發(fā)現(xiàn)運(yùn)行游戲后紅色的物體開(kāi)始自由下落,其他兩個(gè)沒(méi)有變化。這是因?yàn)槲覀兘o紅色物體添加了Rigidbody組件后,它收到了重力的影響。

選中紅色的物體,在Inspector視圖中可以看到Rigidbody組件包含的屬性,下面介紹一下這些屬性的含義,

Mass:質(zhì)量,數(shù)值越大物體下降的速度就越快,默認(rèn)值是1,設(shè)置數(shù)值是盡量不要超過(guò)10,否則物理效果就不真實(shí)了。Drage:阻力,數(shù)值越大物體速度減慢的就越快。Angular Drag:角阻力,數(shù)值越大自身旋轉(zhuǎn)的速度減慢的就越快,UseGravity:是否使用重力。IsKinematic:是否受物理影響。Interpolate:設(shè)置圖像差值。CollisionDetection:碰創(chuàng)檢測(cè)。Constraints:凍結(jié),停止某個(gè)軸向感應(yīng)物理引擎的效果。??Freeze Position:凍結(jié)X,Y,Z軸的位移。Freeze Rotation:凍結(jié)X,Y,Z軸的旋轉(zhuǎn)。這是對(duì)單個(gè)物體的物理效果的設(shè)置,unity3d中也可以對(duì)整個(gè)項(xiàng)目中的所有物理效果進(jìn)行設(shè)置,設(shè)置方法,選擇菜單欄中Edit->

roject Settings->

hysics

此時(shí)即可在Inspector面板中打開(kāi)“Physics Manager”(物理管理器)界面。

Gravity:重力,默認(rèn)情況下物體受Y軸向下的重力為9.8N。Default Material:默認(rèn)物理材質(zhì)。BounceThreshold:反彈值,Sleep Velocity:睡眠速度。當(dāng)速度低于睡眠速度是,它保持靜止。Sleep Angular Velocity:睡眠角速度。當(dāng)角速度低于睡眠角速度時(shí),自身不在旋轉(zhuǎn)。Max Angular Velocity:最大角速度。Min Penetration For Penalty:用于物體與物體之間碰撞后最小穿透力。Solver Iterstion Count:迭代數(shù)量,默認(rèn)值是7.Raycasts Hit Trigger:是否啟動(dòng)命中觸發(fā)。Layer Collision Matrix:圖層碰撞矩陣。當(dāng)這些都按照我們的項(xiàng)目要求設(shè)置好之后,我們就可以給我們添加了Rigidbody的物體一個(gè)力,讓它在力的作用下運(yùn)動(dòng)了。剛體組件可以受力的作用,比如給剛體施加一個(gè)x軸方向的力,那么該剛體綁定的物體將沿著x軸方向上向前移動(dòng),這就好比用力將物體仍出去一樣,該物體將依拋物線的形式移動(dòng)。Unity中的力有兩種:一種普通力,需要設(shè)定方向和大小;? ???第二種為目標(biāo)位置力,需要設(shè)定目標(biāo)點(diǎn)的位置。下面就通過(guò)一個(gè)實(shí)例看下著兩個(gè)力的區(qū)別。新建一個(gè)C#腳本,命名為AddForec并輸入一下代碼using UnityEngine;using System.Collections; public class AddForce : MonoBehaviour {??//添加力的物體? ???public GameObject addFroceobj;??//目標(biāo)位置? ???public GameObject cubeobj;? ?? ?? ?? ?? ?void OnGUI()? ???{? ?? ?? ?? ???if(GUILayout.Button("普通力",GUILayout.Height(50)))? ?? ?? ?? ???{//普通力? ?? ?? ?? ?? ?? ?? ???addFroceobj.rigidbody.AddForce(1000,0,0);? ?? ?? ?? ???}? ?? ?? ?? ???if(GUILayout.Button("位置力",GUILayout.Height(50)))? ?? ?? ?? ???{? ?? ?? ? 位置力? ?? ?? ?? ?? ?? ?? ???Vector3 force=cubeobj.transform.position-addFroceobj.transform.position;? ?? ?? ?? ?? ?? ?? ???addFroceobj.rigidbody.AddForceAtPosition(force,addFroceobj.transform.position,ForceMode.Impulse);? ?? ?? ?? ???}? ???}}設(shè)置完成后,運(yùn)行游戲,當(dāng)點(diǎn)擊普通力按鈕是,物體將會(huì)受到x軸方向上一個(gè)大小為1000的力的作用當(dāng)點(diǎn)擊位置力是,物體將會(huì)向我們的目標(biāo)物體移動(dòng),力的方式為沖擊力。好了,關(guān)于剛體就介紹這么多,下一次將介紹碰撞器的用法。

今天看下unity3d物理引擎的另外一個(gè)重要組成部分,碰撞器,在unity3d中,如果一個(gè)物體想感受碰撞,就必須添加碰撞組件。? 我們先通過(guò)一個(gè)小例子看下什么叫碰撞,物體添加碰撞和沒(méi)有添加碰撞有什么區(qū)別。首先創(chuàng)建一個(gè)場(chǎng)景,包括兩個(gè)cube一個(gè)設(shè)置為紅色一個(gè)設(shè)置為黃色,創(chuàng)建一個(gè)地面。然后給兩個(gè)物體添加Rigidbody,講黃色的物體的BoxCollider組件去掉。然后運(yùn)行游戲,我們會(huì)發(fā)現(xiàn)紅色的小球與地面發(fā)生了碰撞,黃色小球沒(méi)有感應(yīng)到碰撞,直接穿過(guò)地面。

下面我們看下怎么給一個(gè)物體添加碰撞器,選中需要添加碰撞器的物體,然后選擇菜單欄的Component->

kysics如圖:

圖中用紅線框住的部分就是unity給我們提供的所有的碰撞類型。Box Collider:盒子碰撞器,適用于立方體之間的碰撞,Sphere Collider:球體碰撞器適用于球體之間的碰撞Ca

ps

sule Collider:膠囊碰撞器適用于膠囊體之間的碰撞Mesh Collider:網(wǎng)格碰撞器他的碰撞方式由自定義模型的自身網(wǎng)格覺(jué)得,適用于自定義網(wǎng)格碰撞Wheel Collider:車輪碰撞器適用于車輪與地面之間或其他物體之間的碰撞Terrain collider:這個(gè)應(yīng)該是地形碰撞器,新加上的,沒(méi)用過(guò)。下面?zhèn)凕c(diǎn)擊Box Collider選項(xiàng),這樣我們就給物體添加了一個(gè)盒子碰撞器。在Inspector中可以看到Box Collider組件的屬性如圖:

Is Trigger:觸發(fā)器 如激活,此碰撞器用于觸發(fā)事件,并且被物理引擎忽略。Material:物理材質(zhì) 引用何種物理材質(zhì)決定了他和其他對(duì)象如何作用。Center 中心 碰撞器在對(duì)象本地坐標(biāo)中的位置。Size 尺寸 在X、Y、Z三維上的碰撞器尺寸。中心和尺寸就不用多講了。下面我們重點(diǎn)來(lái)看下Is Trigger和Material。首先看看Is Trigge,如果我們勾選了Is Trigge后面的選項(xiàng),物體將不受物理引擎控制,當(dāng)和一個(gè)觸發(fā)器發(fā)生碰撞時(shí)會(huì)發(fā)出三個(gè)獨(dú)特的觸發(fā)信息。觸發(fā)器用于觸發(fā)你游戲中的其他事件,比如過(guò)場(chǎng)動(dòng)畫(huà)、自動(dòng)門開(kāi)啟、顯示教程信息等等。當(dāng)然為了使兩個(gè)觸發(fā)器碰撞時(shí)發(fā)出碰撞事件,其中一個(gè)必須包含剛體。 。一個(gè)觸發(fā)器和一個(gè)普通碰撞器碰撞,其中之一必須附加剛體。Material是物理材質(zhì),是用來(lái)設(shè)置物體表面材質(zhì)的,不同的表面材質(zhì)可影響碰撞后的物理效果。下面我們看下怎么在碰撞其中添加物理材質(zhì)。Unity標(biāo)準(zhǔn)資源包中提供了一些物理材質(zhì)的資源,首先要將他們添加進(jìn)來(lái)。方法如下,在Project視圖中單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選中Import Package->

husic Materials,導(dǎo)入資源包

標(biāo)準(zhǔn)資源包中提供了五種物理材質(zhì):

Bouncy:彈性材質(zhì)。Ice:冰材質(zhì)。Metal:金屬材質(zhì)。Rubber:橡膠材質(zhì)。Wood:木頭材質(zhì)。下面看添加方法,首先在Scene視圖中選擇需要添加物理材質(zhì)的物體然后在Project視圖中通過(guò)拖動(dòng)將Bouncy賦值給Inspector視圖中的SphereCollider即可。

除了這五個(gè)制作好的物理材質(zhì)外,還可以自己制作物理材質(zhì),制作方法如下。在prject視圖中點(diǎn)擊Create->

hysic Material菜單即可。

選擇我們新建的物理材質(zhì),在Inspector視圖中,看到新建物理材質(zhì)的所有屬性。下面簡(jiǎn)要介紹一下這些屬性的含義

Dynamic Friction:動(dòng)態(tài)摩擦,取值0,1之間,0是最小動(dòng)態(tài)摩擦,1為最大動(dòng)態(tài)摩擦。Static Friiction:靜態(tài)摩擦,取值同上Bounciness:碰撞反彈系數(shù),取值0表示無(wú)反彈,1表示最大反彈。Fiction Combine:普通碰撞后的摩擦模式Bounce Combine:反彈碰撞后的摩擦模式Friction Direction:摩擦方向,方向分為x,y,z軸。Dynamic Friction2:動(dòng)摩擦系數(shù)Ststic Friction2:靜摩擦系數(shù)。按照需求調(diào)節(jié)完成。這樣一個(gè)新的物理材質(zhì)就制作完成了。也可改變不同參數(shù),看看每個(gè)參數(shù)對(duì)物體的影響。

www.maiziedu.com/course/540/?組件教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 111. [動(dòng)畫(huà)系統(tǒng)]如何將其他類型的動(dòng)畫(huà)轉(zhuǎn)換成關(guān)鍵幀動(dòng)畫(huà)? 動(dòng)畫(huà)->點(diǎn)緩存->關(guān)鍵幀 112. [動(dòng)畫(huà)]Unit...
    胤醚貔貅閱讀 13,203評(píng)論 3 89
  • This article is a record of my journey to learn Game Deve...
    蔡子聰閱讀 3,875評(píng)論 0 9
  • 更新:【面試題含答案】http://bbs.9ria.com/thread-288394-1-1.html 高頻問(wèn)...
    好怕怕閱讀 4,804評(píng)論 3 52
  • 首先要熟悉一些基本的力學(xué)名詞及相關(guān)公式 剛體(Rigidbody):剛體是指在運(yùn)動(dòng)中和受到力的作用后,形狀和大小不...
    FLY旳影子閱讀 11,661評(píng)論 0 11
  • 無(wú)論是碰撞檢測(cè)還是觸發(fā)檢測(cè),他們都基于Collider組件。兩個(gè)游戲?qū)ο蟀l(fā)生碰撞時(shí),碰撞器可以產(chǎn)生系統(tǒng)默認(rèn)的碰撞產(chǎn)...
    S_H_C閱讀 3,045評(píng)論 0 3