久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Unity零基礎到入門 | Unity中必備組件技能學習!

 敲代碼的小Y 2021-12-01

??簡介

組件是在游戲對象(Game Object)中的實現(xiàn)某些功能的集合無論是模型,、 GUI,、燈光還是攝像機,所有游戲對象本質上都是一個空對象掛載了不同類別的組件,,從而讓該游戲對象擁有不同的功能,。

簡單說一下Unity開發(fā)的框架:項目—>場景—>游戲對象—>組件—>屬性

一個游戲由多個場景(Scene)組成 一個場景由多個游戲物體(GameObject)組成 一個游戲物體由多個組件(Component)組成

對于一個空游戲對象來說,如果為其添加一個攝像機組件,那么該對象就是一架 攝像機,;如果為其添加了網(wǎng)格過濾(Mesh Filter)組件,,那么該對象就是一個模 型;如果為其添加了燈光組件,,該對象就是一盞燈光,。在Unity中也是一種組件


??Unity工程結構

在介紹Unity的各種組件之前,先來簡單介紹下Unity的工程結構一般來說,,一個Unity工程正常都會有這四個文件夾

Assets :是用來存儲?程所需的所有資源?件 (必備)Library :是?程所需要的所有資源庫(類庫)是Unity?動給我們?成的,,如果一個Unity工程開發(fā)時間長了,這個文件夾可能會很大,,一般來說直接刪除了,,工程也可以正常開發(fā)使用ProjectSetting :是我們當前Unity工程的一些?程設置?件,就是下圖上面這些設置相關就存儲在這個文件夾,,刪除的話就要重新配置了Temp :是臨時?件,,一般來說也沒啥用,可看情況選擇去留


??幾種常用組件介紹

??Transform組件

Transform 是物體模型最基本的組件,,基本上所有物體都有

來看看官方的介紹:The Transform component determines the Position, Rotation,and Scale of each object in the scene. Every GameObject has a Transform. The position, rotation and scale values of a Transform are measured relative to the Transform’s parent. If the Transform has no parent, the properties are measured in world space

譯文:變換組件決定場景中每個對象的位置,、旋轉和比例。每個游戲對象都有一個轉換 變換的位置,、旋轉和縮放值是相對于父變換計算的,。如果transform沒有父物體,屬性將會根據(jù)在世界空間中計算

總結一句話就是——Transform是用于控制游戲對象的位置,、旋轉和大小比例的下圖分別是Transform的Inspector面板屬性圖和各種屬性


??Mesh Filter(網(wǎng)格過濾器)和Mesh Renderer(網(wǎng)格渲染器)

Mesh:是指模型的網(wǎng)格,,建模就是建網(wǎng)格。細看Mesh,,可以知道Mesh的主要屬性內(nèi)容包括頂點坐標,,法線,紋理坐標,,三角形繪制序列等其他有用屬性和功能。因此建網(wǎng)格,,就是畫三角形,;畫三角形就是定位三個點。

Mesh Filter(網(wǎng)格過濾器):內(nèi)包含一個Mesh組件,,可以根據(jù)MeshFilter獲得模型網(wǎng)格的組件,,也可以為MeshFilter設置Mesh內(nèi)容。

Mesh Render(網(wǎng)格渲染器):是用于把網(wǎng)格渲染出來的組件,。MeshFilter的作用就是把Mesh扔給MeshRender將模型或者說是幾何體繪制顯示出來,。

每個GameObject都可以有一個MeshFilter組件,也可以沒有,。如果有該組件,,那么一定有Mesh屬性,,而且有MeshFilter的話,就必須要Mesh Renderer才能將此網(wǎng)格渲染出來,,不然是看不見該網(wǎng)格的,。

大概就是這么個邏輯:MeshFilter->Mesh->Mesh Renderer


??Collider (物體碰撞器)

碰撞器是Unity引擎為模擬物理效果的組件

功能:可以讓兩個帶有碰撞器的游戲對象相互接觸的時候不會穿透過去,而是會發(fā)生一個碰撞效果 一般來說創(chuàng)建一個物體時系統(tǒng)會自動匹配相應的Collider(碰撞器)

創(chuàng)建的時候先選中游戲對象,,然后在Inspector面板上點擊Add Component ,,然后添加想要的碰撞器就行選中游戲對象->Inspector面板->Add Component->(想要的組件)(添加大部分組件都是這個流程)碰撞器有以下幾種,下面就簡單介紹一下,,這幾種碰撞器組件屬性其實都差不多,,就是調(diào)整大小的時候面板屬性會有所差別 1.盒碰撞器(Box Collider) 2.橢圓碰撞器(Sphere Collider) 3.膠囊碰撞器(Capsule Collider) 4.網(wǎng)格碰撞器(Mesh Collider) 5.車輪碰撞器(Wheel Collider) 6.地形碰撞器(Terrain Collider)碰撞器屬性介紹

屬性功能
Edit Colloder手動編輯Collider
Is Trigger是否為觸發(fā)器
Material材質
Center碰撞器的中心點,相對于物體的自身坐標
Size碰撞器的大小
Radius碰撞器的半徑大小
Radius碰撞器的半徑大小
Height圓柱體高度
Direction方向
Mesh選擇網(wǎng)格

??剛體(RigidBody)

上面介紹了碰撞體,,這下來介紹剛體,。其實他倆都是為了模擬物理引擎效果而存在的,一般來說也會配合使用

在Unity理引擎中,,使用 剛體(RigidBody) 來模擬這種物理效果. 當一個游戲對象被賦予剛體組件之后,,游戲引擎就會對其進行物理效果的計算和模擬。同時我們也可以給這個對象施加各種作用力,,讓它運動起來,。另外如果要實現(xiàn)重力的效果,那么相應的游戲物體都必須附上剛體組件,。組件添加方法還是老樣子,,選中游戲對象->Inspector面板->Add Component->RigidBody面板屬性屬性介紹

屬性作用
Mass質量
質量越大,慣性越大,。建議場景中的物體質量最好不要相差100倍率以上,。防止兩個質量相差太大的物體碰撞后會產(chǎn)生過大的速度,從而影響游戲性能及呈現(xiàn)的效果,。
Drag阻力(摩擦力)
這里指的是空氣阻力,,屬性數(shù)值影響阻礙此物體對象的直線運動的速度效果。當游戲物體受到某個作用力的時候,,這個值越大越難移動,。如果設置成無限的話,物體會立即停止移動
Angular Drag角阻力(旋轉摩擦力)
同樣指的是空氣阻力,,只不過是用來阻礙物體旋轉的,。如果設置成無限的話,物體會立即停止旋轉
Use Gravity使用重力效果
不勾選,,則不會受到重力影響,。
Is Kinematic是否符合運動學的(是否受到物理引擎的驅動)
勾選后,變成不再受物理引擎的影響,改為受Transform的影響,。即不再有重力,,不再被碰撞等,只會呆在Transform規(guī)定的位置上不動,,物體撞擊時候像一堵墻一樣不會倒,,位置不會因碰撞而發(fā)生改變
Interpolate差值類型
如果看到剛體移動的時候運動的不是很平滑,可以選擇一種平滑方式,。即:平滑物體運動的曲線
None(無差值):不使用差值平滑
Interpolate(差值):根據(jù)上一幀來平滑移動
Extrapolate(推算):根據(jù)推算下一幀物體的位置來平滑移動
Collision Detection碰撞偵測,。用來改變物體碰撞檢測的精度
Discrete(離散):默認的碰撞檢測方式。但若當物體A運動很快的時候,,有可能前一幀還在B物體的前面,,后一幀就在B物體后面了,這種情況下不會觸發(fā)碰撞事件,,所以如果需要檢測這種情況,,那就必須使用后兩種檢測方式
Continuous(連續(xù)):這種方式可以與有靜態(tài)網(wǎng)格碰撞器的游戲對象進行碰撞檢測??梢员苊庖蛭矬w移動速度過快而穿過另一個物體的情況
Continuous Dynamic(動態(tài)連續(xù)):這種方式可以與所有設置了2或3方式的游戲對象進行碰撞檢測
Constraints約束
約束位置或旋轉時的x/y/z坐標,使其Freeze(凍結),。比如想控制游戲對象人物上臺階不會摔倒,或者高速碰到一個墻壁物體時不會胡亂轉動的話,則要凍結x,,y和z軸的旋轉
centerOfMass:相對于變換原點的質心
angularVelocity 剛體的角速度向量,修改它可以使剛體進行旋轉

??腳本

Unity中的腳本也算是組件的一種,,可以掛在游戲物體上,同時也是有限制的,,并不是所有的腳本都可以掛到對象上面的 關于腳本這部分會再寫一篇文章單獨詳細介紹,,這里就簡單提及一下好啦 可以先看下圖簡單了解下


??添加、獲取和銷毀組件的方法

既然簡單提到腳本了,,那就正好先說一下怎樣在腳本中添加,、獲取和銷毀組件的方法吧添加組件

GameObject Cube= GameObject.CreatePrimitive(PrimitiveType.Cube);//創(chuàng)建一個方格
Cube.AddComponent<BoxCollider>();//添加盒形碰撞器組件
Cube.AddComponent<Rigidbody>();//添加剛體組件
Cube.AddComponent<Test>();//添加Test腳本

獲取組件

BoxCollider boxCollider = Cube.GetComponent<BoxCollider>();//獲取盒形碰撞器組件
Rigidbody rigidbody = Cube.GetComponent<Rigidbody>();//獲取剛體組件
Test test= Cube.GetComponent<Test>();//獲取某個Test腳本

GetComponent
GetComponents

GetComponentInChildren
GetComponentsInChildren

GetComponentInParent
GetComponentsInParent

銷毀組件

//()中的參數(shù)為創(chuàng)建相應組件時的組件名稱
Destroy(boxCollider );//銷毀盒形碰撞器組件
Destroy(rigidbody);//銷毀剛體組件


??總結

本篇博客對于Unity中幾種最常見和最常用的組件做了一個介紹 當然在Unity中的組件數(shù)不勝數(shù),都是對應相應的功能需求來做的,,在這里就不對贅述了,,以后用得到再單獨介紹也不遲

如果覺得有用可以給個三連支持一下呀~加油!

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多