久久天天躁狠狠躁夜夜躁,国产精品入口福利,97久久精品人人爽人人爽蜜臀 ,中文字幕国产精品一区二区

當前位置首頁 > 教育資訊

unity制作第一個小游戲——滾動小球一、創建項目

更新時間:2023-12-29 文章作者:佚名 信息來源:網絡整理 閱讀次數:

接出來我們使用unity制做第一個小游戲,我恐怕這也是所有unity開發者都十分熟悉的一個類似“HelloWorld”標致的游戲了——滾動小球IeG物理好資源網(原物理ok網)

一、創建項目(名子自取),創建場景,起名為IeG物理好資源網(原物理ok網)

二、創建一個地面對象(滑鼠右鍵->3D->Plane),并將其設置為0,0,0,之后把其長寬擴大1倍(即Scale設置為2,1,2)IeG物理好資源網(原物理ok網)

之后我們想要改變地面對象的顏色須要這樣做:首先在目錄下新建一個文件夾,之后右鍵如圖創建一個并命名IeG物理好資源網(原物理ok網)

之后鍵盤拖動此材質到對應的游戲對象上IeG物理好資源網(原物理ok網)

下邊介紹下Plane游戲對象的組件構成,組件用于指定對象的位置、旋轉、縮放;Mesh組件用于指定該對象是一個哪些類型對象;Mesh用于設置對象形態屬性;Mesh用于設置碰撞檢查(通常會做兩套建模,一套拿來顯示對象具體形象,另一套會簡化用于碰撞測量的模型,比如RPG游戲,人物會用軟膏體作為碰撞測量模型,但FPS類游戲就不行)。我們在點擊Gound步入到設置界面,之后單擊這個位置都會彈出選色卡,最后選擇自己喜歡的顏色就可以了IeG物理好資源網(原物理ok網)

實現邏輯:IeG物理好資源網(原物理ok網)

悉心的人會發覺在Plane對象中也會把材質展示下來,這顯然是為了便捷我們快速對應材質并更改(當材質和對象好多時這樣是很便捷的)IeG物理好資源網(原物理ok網)

三、創建小球,并命名為,指定為0,3,0,同時我們給之前的Plane也起個名子命名為,同時根據相同的方式創建另一個命名為給小球著色IeG物理好資源網(原物理ok網)

設置小球光滑程度(不讓它反光太厲害)IeG物理好資源網(原物理ok網)

同樣的方式地面也可以設置IeG物理好資源網(原物理ok網)

最終療效如圖:IeG物理好資源網(原物理ok網)

unity引擎外置了碰撞估算和測量,我們只須要指定碰撞后須要做哪些(如主角扣血或死亡)IeG物理好資源網(原物理ok網)

四、為小球添加鋼體組件(即重力、摩擦力、彈力)IeG物理好資源網(原物理ok網)

點擊小球對象->Add->->IeG物理好資源網(原物理ok網)

之后運行游戲即可見到小球落在了地板上IeG物理好資源網(原物理ok網)

五、給小球添加滾動風波IeG物理好資源網(原物理ok網)

兩種方式創建:IeG物理好資源網(原物理ok網)

法一:點擊小球->Add->New->填入文件名->點擊創建,即可在下創建對應,且早已與小球對象關聯IeG物理好資源網(原物理ok網)

法二:在下新建文件夾,右鍵->->C#->命名,之后將此拖到小球對象上即可邦定IeG物理好資源網(原物理ok網)

注意:組件前有一個打鉤選項,代表組件是否要使用,請保證使用時是選中狀態IeG物理好資源網(原物理ok網)

雙擊創建的文件即可用vs打開(確保此文件名與類名一致),代碼中start方式用于游戲開始前的初始化工作,方式用于游戲運行中的更新操作(每幀調用一次,每秒60幀)IeG物理好資源網(原物理ok網)

添加測試代碼:IeG物理好資源網(原物理ok網)

將鋼體組件與腳本關聯,便于后續進行業務邏輯的操作IeG物理好資源網(原物理ok網)

方式一:使用代碼IeG物理好資源網(原物理ok網)

rd = GetComponent();
IeG物理好資源網(原物理ok網)

方式二、拖動鋼體組件到簡本,即拖動到如圖位置(但這些方式使用較少)IeG物理好資源網(原物理ok網)

之后我們再給鋼體添加一個往右的力(不指定大小默認是1N),注意要再中添加此代碼,這樣小球就會仍然運動IeG物理好資源網(原物理ok網)

假如定義鋼體時設為則不會顯示對應設置,同時也未能通過拖放綁定鋼體IeG物理好資源網(原物理ok網)

為小球設置一個自定義大小的力IeG物理好資源網(原物理ok網)

rd.AddForce(new Vector3(10, 0, 0));
IeG物理好資源網(原物理ok網)

六、通過鼠標控制小球的滾動IeG物理好資源網(原物理ok網)

獲取鼠標左右方向輸入(按下A或方向左鍵,返回0~-1之后仍然為-1;按下D或方向右鍵,返回0~1之后仍然為1;為何要有一個從0到1的過程?由于數學中物體運動時有一個加速度的療效)IeG物理好資源網(原物理ok網)

float h = Input.GetAxis("Horizontal");
Debug.Log(h);
IeG物理好資源網(原物理ok網)

之后我們將鼠標輸入值形參到力中IeG物理好資源網(原物理ok網)

float h = Input.GetAxis("Horizontal");
rd.AddForce(new Vector3(h, 0, 0));
IeG物理好資源網(原物理ok網)

同理獲取按鍵前后方向輸入(按下W或方向上鍵,返回返回0~-1,按下S或方向下鍵,返回0~1)IeG物理好資源網(原物理ok網)

float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
rd.AddForce(new Vector3(h, 0, v));
IeG物理好資源網(原物理ok網)

假如認為小球滾動的太慢,可以改變力的大小,如IeG物理好資源網(原物理ok網)

rd.AddForce(new Vector3(h, 0, v)*10);
IeG物理好資源網(原物理ok網)

若果不想用WASD去控制上下左右,可以在這兒設置:->Input->Axes->/(其中與我們代碼中floath=Input.("")的相對應)IeG物理好資源網(原物理ok網)

七、調整單反位置(使視野愈發寬闊)且追隨小球IeG物理好資源網(原物理ok網)

如圖,在Scene面板下調整單反的高度和旋轉度(即帶動紅色箭頭往上一些,旋轉黃色環使單反朝下一些),之后將小球置于地板上(不要一開始增長了,注意小球本身半徑為1m,所以設座標為0,0.5,0)IeG物理好資源網(原物理ok網)

給單反添加腳本(Add)IeG物理好資源網(原物理ok網)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FollowTarget : MonoBehaviour
{
    public Transform playTransform;
    public Vector3 offset;
    // Start is called before the first frame update
    void Start()
    {
        playTransform = GameObject.Find("Player").GetComponent();//獲取小球的初始位置
        offset = transform.position - playTransform.position;//獲取初始時小球和相機間的距離
    }
    // Update is called once per frame
    void Update()
    {
        transform.position = playTransform.position + offset;//相機的位置隨小球的位置改變
    }
}
IeG物理好資源網(原物理ok網)

可以看見滾動小球時單反會隨著一起動IeG物理好資源網(原物理ok網)

八、添加院墻避免小球落到地面以外的地方IeG物理好資源網(原物理ok網)

新建Cude,起名為Wall(注意位置為0,0.5,0),并拉伸使其布滿一邊(如這兒縮放比是1,1,20),之后放在地面的各邊(位置變為:10,0.5,0),并設置(不光滑、顏色)IeG物理好資源網(原物理ok網)

之后我們ctrl+d進行復制,制造另外的墻,對邊直接聯通過去即可,領邊設置旋轉讀書為90°即可IeG物理好資源網(原物理ok網)

假如認為邊上的棱角不好看可設值任意兩個對邊寬度為21IeG物理好資源網(原物理ok網)

這樣小球在滾動時就不會掉到外邊去了IeG物理好資源網(原物理ok網)

為了便捷,我們將所有和場景有關的對象放在一個空對象下滾動摩擦力方向判斷,便捷后期對象的管理,我們新建一個鍵盤右鍵->Empty,命名為Env,之后reset一下(這一步很重要,不做會造成場地錯亂),之后將Wall和放在此對象之下IeG物理好資源網(原物理ok網)

八、制作一個最簡單的類似貪吃蛇的游戲,小球類比貪吃蛇,六面體類比食物IeG物理好資源網(原物理ok網)

新建Cude,命名為Food,縮放比為0.5,0.5,0.5,旋轉度數隨便,設置(不光滑、顏色)。創建預制體文件夾,將剛剛創建好的Food拖到該文件夾中,這樣此Food就可以作為模板多次使用且更改配置只需更改此模板即可IeG物理好資源網(原物理ok網)

使用預制體創建相同類型游戲對象滾動摩擦力方向判斷,技巧一:在面板,直接拖到游戲場景中;方式二:直接復制面板的Food(推薦,由于可以保留位置等屬性)(預制體和其子對象,可以理解為類和對象的關系)IeG物理好資源網(原物理ok網)

更改面板下預制體屬性會影響所有Food屬性,但更改下某Food屬性只會更改該對象的屬性IeG物理好資源網(原物理ok網)

假如想讓一個子對象的屬性賦給預制體,可旋轉如圖ApplyAllIeG物理好資源網(原物理ok網)

為預制體設置腳本,便于實現Food旋轉的功能,設置Food旋轉(1s旋轉60此,每次向下旋轉1°)IeG物理好資源網(原物理ok網)

查看文檔:Help->Unity/APIIeG物理好資源網(原物理ok網)

英文文檔:Unity用戶指南2020.3(LTS)-Unity指南IeG物理好資源網(原物理ok網)

為小球()設置碰撞檢查邏輯,在腳本下新建三個方式,如圖:IeG物理好資源網(原物理ok網)

:碰撞發生了(即兩個物體剛才接觸)IeG物理好資源網(原物理ok網)

:碰撞進行中(即兩個物體接觸中)IeG物理好資源網(原物理ok網)

:碰撞結束了(即兩個物體脫離接觸)IeG物理好資源網(原物理ok網)

添加一個Food標簽,之后將預制體的Tag設置因此標簽(設置標簽是為了批量處理某一些相同標簽的對象,如這兒是為了判定小球碰撞到了什么物體)IeG物理好資源網(原物理ok網)

當小球碰撞到標簽為Food的物體時,銷毀被碰撞物體IeG物理好資源網(原物理ok網)

但我們在實際操作過程中會發覺,當碰撞后小球會被Food抵擋一下,特別影響游戲體驗,所以我們改用觸發檢查(即不會發生碰撞,小球會穿過物體)IeG物理好資源網(原物理ok網)

將預制體的碰撞器更改為觸發器,這樣就不會執行方式了IeG物理好資源網(原物理ok網)

并將邏輯代碼改為在中調用IeG物理好資源網(原物理ok網)

九、計分(每吃一個Food計1分)和勝利提示IeG物理好資源網(原物理ok網)

在腳本中添加計數變量IeG物理好資源網(原物理ok網)

創建UI組件以顯示分數,右鍵->UI->->Text即可,之后切換到2D模式下,雙擊隨后,如圖,所有的UI組件就會置于下,用于UI的風波處理(如點擊等)IeG物理好資源網(原物理ok網)

調整文字居中顯示IeG物理好資源網(原物理ok網)

調整文本框位置為右上角(右側的設置是為了保證不管屏幕寬度多長一直都在右上角)調整字體大小和文本內容IeG物理好資源網(原物理ok網)

之后在代碼中定義一個Text對象,并在小球吃食后將分數復制到TextIeG物理好資源網(原物理ok網)

使用代碼將對象與之前創建的文本框綁定IeG物理好資源網(原物理ok網)

創建勝利提示:再創建一個Text(同上),置于屏幕中央,調整下字體顏色,之后編碼如下IeG物理好資源網(原物理ok網)

十、打包發布IeG物理好資源網(原物理ok網)

File->Build->AddOpen,假如右多個場景則將其拖到大文本框中,默認顯示第一各場景,其他場景須要代碼調整才能跳轉IeG物理好資源網(原物理ok網)

選擇發布平臺:IeG物理好資源網(原物理ok網)

之后點擊Build即可,之后會生成如下文件IeG物理好資源網(原物理ok網)

游戲運行后默認是全屏顯示IeG物理好資源網(原物理ok網)

假如想窗口顯示,可在中設置IeG物理好資源網(原物理ok網)

假如想在聯通端發布,須要下載相關模塊,打開,勾選相關模塊下載IeG物理好資源網(原物理ok網)

后續操作同理IeG物理好資源網(原物理ok網)

發表評論

統計代碼放這里
主站蜘蛛池模板: 漳浦县| 涟源市| 金川县| 綦江县| 深圳市| 邻水| 双城市| 宜黄县| 青海省| 包头市| 澜沧| 鹤岗市| 南澳县| 新丰县| 会理县| 红河县| 申扎县| 民乐县| 湖南省| 宕昌县| 玉田县| 陇川县| 漯河市| 家居| 无极县| 德阳市| 四平市| 洛川县| 平邑县| 津南区| 黑水县| 嘉义市| 大余县| 绥德县| 南皮县| 磐安县| 昆山市| 友谊县| 庆元县| 怀仁县| 山东省|