Unity3D學習筆記之四完善Prefab并添加First Person Controller

好久沒學東西并用博客記錄了,這個年過的很懶散,慢慢臨近開學了,也要提前適應一下,寫寫東西,這樣開學才能更好的進入狀態呀~~

本次筆記中,我們將來雕琢一個更加完善的Prefab,并添加一個第一人稱角色在場景中。
這一系列教程以及素材均參考自人人素材翻譯組出品的翻譯教程《Unity游戲引擎的基礎入門視頻教程》。下載地址附在第二篇筆記中。

? ? ?上一篇教程我們創建了一個Prefab,在最后我利用四個Prefab通多頂點捕捉建立一個簡易的隧道。這只是為了示意Prefab的便捷性,下面我們先把這個隧道刪除到只剩一個Prefab(在左側Hierarchy視圖中刪除),然后對我們的Prefab進行更細的雕琢。
? ?? 我們的Prefab四面是沒有物理體系的,沒有厚度,就不會存在物理碰撞等效果,放在地板上的東西會無限下墜。所以我們來為Prefab添加物理組件。
? ? ?首先從Hierarchy中展開當前場景中的PFB_Straight,選中MineShaft_Floor
? ? ?點擊系統菜單的Component,Physics,Box Collider,添加一個盒狀的碰撞器



添加后,地板上會有綠色的邊框,同時在右側Inspector視圖中會有新添加的Box?Collider組件。我們根據自己情況來定義碰撞器的厚度,我這里在Box Collider組件,Size中將Y改為0.01。這個是要看你導入模型的縮放比例,如果你導入的模型格式是3d max的,那應該0.1就可以了。這個自己觀察一下,調整一下數值,很薄的一層就可以了。





?建立了Box?Collider之后,物體接觸地面就不會掉下去。下面右鍵Assets文件夾,來導入系統自帶的package——Character Controller,這個包包含了第一人稱視角和第三人稱視角的小角色。



我們按默認的全部選中,不去動它,單擊Import就可以引入。
? ? ? ? 引入之后我們的Assets文件夾下會有一個名為Standard Assets的新的子文件夾。

接下來依次打開文件夾Standard?Assets——Character Controllers,我們可以看到一個第三人稱的礦工角色和一個第一人稱的形似膠囊的角色。
?????我們可以選中后在右下角的預覽界面拖動查看當前的模型,如下二圖。



然后我們要做的是,將第一人稱的控制器拖入到我們的Scene場景中,并向上拖動適當調整位置。

此時我們如果點擊上方的播放按鈕,就可以在我們的場景中自由移動和調整視角,效果如下圖。
因為我們沒有設置任何的燈光文理和背景顏色等,所以墻壁是黑色的,外面背景是藍色。如果你播放之后,一直往下掉,那是你的Controller位置太低了,向上平移一下就好。

接下來我們需要規范一下我們的Prefab,我們需要讓當前預設體的中心就是物理空間的正中心而且讓此Prefab建在坐標原點之上。實際上當前是有一些誤差的,點擊當前Prefab,在inspector視圖中是可以看到這些誤差的。所以我們調整一下,讓我們的預設體更加完美。
? ? ?第一步,先解除當前場景中的父子關系。即在Hierarchy視圖中選中PFB_Straight內四個子元素,拖出PFB_Straight的范圍。系統此時會提示你,這樣做會失去當前的父子關系,我們點擊Continue。Hierarchy視圖變為如下二圖的樣子,子元素和我們新建的游戲物體又全部變白。



接下來我們選擇空的游戲物體PFB_Straight。因為之前我們有建設隧道或其他之類的動作,所以現在無論地板還是天花板墻面,都不是在一開始我們引入后調整的基于0,0,0的位置了,所以我們首先,先要將四個小部分的坐標修改回去。
? ? ?首先選中MineShaft_Floor,我們將其坐標調整為0,0,0,然后按住V像一開始一樣把兩面墻拖過去,再把MineShaft_Ceiling改為0,0,0就可以了。然后把我們的First?person?Controller移動到空間內。
? ? ?接下來我們再選中那四個小部分,拖入到PFB_Straight中去,我們會發現這次預設體沒有變成藍色。

原因其實很簡單,以為我們已經打破了Prefab的父子關系,所以我們選中prefab之后,在inspector視圖中點擊apply,鼠標停留的時候,他會出現詳細的解釋。點擊apply之后,我們所做的改變會應用到默認的預設體中,即我們后面所拖出來的每個預設體,坐標位置都在物理中心。當然我們也可以點Apply旁邊的Revert撤銷。


?至此我們完善地創建了一個坐標值和坐標軸都很標準的,地板有物理模型的Prefab,并在Prefab的地板上添加了一個第一人稱控制器。

2015.2.27? ? ?0:03
By Mr.Losers

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277670.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277670.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277670.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

高精度(壓位+判負數+加減乘+讀寫)

本算法目前屬于還處于測試狀態,歡迎Hack! struct gj{bool fu; //是否是負數int tt,mod; //高精的長度int s[40005]; //壓位用的數組inline gj(){ //整體初始化fu0; tt0; mod1e9;memset(s,0,sizeof(s));}inline gj read(){ register char ch; //高精度讀…

Hadoop從安裝Linux到搭建集群環境

簡介與環境準備  hadoop的核心是分布式文件系統HDFS以及批處理計算MapReduce。近年,隨著大數據、云計算、物聯網的興起,也極大的吸引了我的興趣,看了網上很多文章,感覺還是云里霧里,很多不必要的配置都在入門教程出現…

git推送本地分支到遠程分支

場景 有時候我們開發需要開一個分支,這樣可以有效的并行開發. 開分支有兩種方式: 一種是在遠程開好分支,本地直接拉下來;一種是本地開好分支,推送到遠程.遠程先開好分支然后拉到本地 git checkout -b feature-branch origin/feature-branch //檢出遠程的feature-branch分支到…

delphi 函數內創建對象 釋放_JavaScript 的函數底層運行機制

▲ 點擊上方藍字關注我 ▲文 / 景朝霞來源公號 / 朝霞的光影筆記ID / zhaoxiajingjing圖 / 自己畫目錄0 / 題(1)第一題(2)第二題1 / 引用數據類型:object2 / 引用數據類型:function(1)第二題,簡圖(2)創建函數(3)執行函數(4)閉包3 / 練習題(1)…

Unity3D學習筆記之五為Prefab添加材質

本次筆記中,我們將利用unity來創建并使用材質,把材質添加到我們的Prefab中去。這一系列教程以及素材均參考自人人素材翻譯組出品的翻譯教程《Unity游戲引擎的基礎入門視頻教程》,下載鏈接附在第二篇學習筆記中。繼續上次筆記中所記錄的東西&a…

分布式版本控制系統之Git

Git Git 是目前世界上最先進的分布式版本控制系統(沒有之一)作用 源代碼管理為什么要進行源代碼管理? 方便多人協同開發方便版本控制Git的誕生 作者是 Linux 之父:Linus Benedict Torvalds當初開發 Git 僅僅是為了輔助 Linux 內核的開發&…

oo第三次博客-JML規格

這三周的作業主要是圍繞以JML來約束代碼開發,以確保程序的正確性與魯棒性。 Part 1:三次作業的實現與bug 第一次作業沒有任何算法和數據結構上的難度,對于Path和PathContainer的各個方法的實現按照給出的規格復讀即可。唯一的難點&#xff08…

Kinect開發筆記之一Kinect詳細介紹

畢業設計的課題我選擇了結合Kinect和Unity3D開發體感游戲,這是我十分感興趣的一個課題,所以做好當然責無旁貸。準備再寫一系列Kinect的學習筆記,記錄自己畢設一步一個腳印的歷程。1、Kinect背景介紹眾所周知,Kinect是一款集成了很…

獲取2個地址之間的距離(高德API)

2019獨角獸企業重金招聘Python工程師標準>>> string startLonLat SiteHelper.GetLonLat("大連"); //獲取起始地經度緯度 string endLonLat SiteHelper.GetLonLat("沈陽"); //獲取目的地經度緯度 int distance SiteHelper.GetDistance(star…

WPF屬性學習

一.WPF屬性系統 CLR屬性 .NET中的屬性稱為CLR屬性 轉載于:https://www.cnblogs.com/programme-maker/p/10910166.html

chemdraw怎么連接兩個結構_利用神經結構搜索構建快速準確輕量級的超分辨率網絡...

介紹我們知道,把神經網絡拆解,可以把它歸結為幾個元素的排列組合而成,例如,以卷積神經網絡為例,其主要由卷積層,池化層,殘差連接,注意力層,全連接層等組成,如…

Unity3D學習筆記之六創建更多的Prefab

在寫完第五篇后,因為不知名的原因,我突然不能夠上傳100KB以上的圖片在博客中了。等了幾天還是這樣,所以我用PS把圖片的分辨率一張張調低,讓圖片的大小都在100左右,將積攢了四篇的學習筆記一起發上來,也算彌…

iOS底層探索(二) - 寫給小白看的Clang編譯過程原理

iOS底層探索(一) - 從零開始認識Clang與LLVM 寫在前面 編譯器是屬于底層知識,在日常開發中少有涉及,但在我的印象中,越接近底層是越需要編程基本功,也是越復雜的。但要想提升技術卻始終繞不開要對底層原理的探究,很多資…

四、構建Node Web程序

---恢復內容開始--- 一、HTTP 服務器的基礎知識 1、Node如何向開發者呈現HTTP請求 2、一個用“Hello World”做響應的HTTP服務器 它用了默 認的狀態碼200(表明成功)和默認的響應頭 3、讀取請求頭及設定響應頭 Node提供了幾個修改HTTP響應頭的方法&#x…

datagrid 什么時候結束編輯_2020年中考結束后,什么時候出分?什么時候報志愿?...

導語7月19日下午16:00,2020年北京中考正式落下帷幕。考試結束后,很多家長和考生都會長舒一口氣,但北京中考在線團隊提醒你,現在還不是放松的時刻,中考結束后,還有成績查詢和填報志愿等重要事件等著你。那么…

Unity3D學習筆記之七創建自己的游戲場景

到現在為止我們已經擁有了比較完備的Prefab,已經可以創建宏大的游戲場景,并以第一人稱視角在場景中漫游了。這里給大家做個小的示范,建一個小場景大家在創建場景的時候需要自由發揮,做個盡量大的場景出來。這一系列教程以及素材均…

excel if in函數_【Excel函數】Small+Index+IF 一對N返回

通常情況下,Vlookup和lookup函數只能返回滿足條件的第一個,剩余的都不會返回。 這也是其函數的一個弊端之一。 若是按照條件,返回所有滿足條件的數據(1->N)的,可是適用組合函數。 Index返回位置&#xf…

Unity3D學習筆記之八為場景添加細節(一)

這一系列教程以及素材均參考自人人素材翻譯組出品的翻譯教程《Unity游戲引擎的基礎入門視頻教程》,下載鏈接附在第二篇學習筆記中。我花了30分鐘做了一個中等大小的迷宮場景,不知道大家自己發揮,做的場景大小如何。在完成場景之后&#xff0c…

mysql數據庫表的管理(增刪改)

表字段管理1. 添加到末尾alter table 表名 add 字段名 數據類型;2 添加到開頭alter table 表名 add 數據類型 first;3. 添加到指定位置alter table 表名 add 新字段名 數據類型 after 原有字段名;4. 刪除字段alter table 表名 drop 字段名;5. 修改數據類型alter ta…

哪個app最費電_微波爐和烤箱,買哪個劃算?

微波爐和烤箱不能說買哪個劃算,而是看哪個更適合?我家微波爐和烤箱兩個都有,所以這個問題我來回答一下。雖然外形上看起來,微波爐和烤箱似乎沒有多大的區別,從功能上看,它們也都是加熱,但它們側…