手把手教你完成unity3D跑酷遊戲系列(二)

作爲新人的我認爲我的一些經驗,對其他零基礎的小白可能也有一些啓發。算是個人的一些經驗和犯得一些錯誤的總結。有一定基礎的人可以直接跳過本文。本文真的是面向給家閒的沒事幹想弄個小遊戲的零基礎的朋友們。

重要的事再說一次本文僅對零基礎的一些朋友可能有一些幫助,如果您有一定經驗可直接忽略本文。(本文屬於系列文 看完這個系列零基礎的一樣可以完成跑酷類遊戲製作但需要自己找素材)

一,資源包的導入

資源包的導入非常簡單,首先找到一個資源包(自行找就可以沒有的話也可以看看反正方法是一樣的)。下載下來之後應該是這樣滴圖標。在這裏插入圖片描述然後我們打開Unity新建一個3D的project.然後拖動你的素材包圖標拖到在這裏插入圖片描述
在這裏插入圖片描述
然後點擊import即可完成導入。 素材包來自CSDN學院 沒有也沒事這節課我沒用素材包哈哈哈哈哈哈哈

二,創建場景(路面)

如果您的素材包有路面可以直接拖拽,如果沒有可以這樣在上方選項的GameObject選擇3d Object 然後選擇plane做路面,cube做跑酷遊戲的主角。(如果您有素材 我會在下一次博客中更新素材動畫效果的引入。也可以先看看這個操作上沒什麼區別。)於是我們得到了一個cube和一個plane。當然您的屏幕上的應該是白色的我因爲覺得白色有點亂就把環境光調了一下在這裏插入圖片描述
環境光可以在 Window選項卡Rendering選項中的Light Settings找到可以在這裏設置一個你喜歡的環境光。(✪ω✪)在這裏插入圖片描述 就是中間那個條條選它!選它!φ(>ω<) ** 我們需要知道***plane也就是我們的路面的長度,這個我們可以通過控制cube的大小來實現。點擊cube將它拖拽到圖示位置(上上圖)後點擊cube將它的transform屬性裏的scale的數值更改知道它與你的路面等長。像圖片一樣,於是我們通過cube測量了plane的長度爲10然後將cube恢復爲你所需要的大小(你想要的人物的大小與高度)在這裏插入圖片描述

三 無限路面

首先我們先複製出來兩個新的plane並以此調整它們Transform屬性的position讓它們依次相連。(我選擇的是z軸方向所以接下來的腳本什麼的都會是關於z軸如果你選的不是請自行修改。)複製操作只需要在左側欄框裏右鍵plane。然後複製粘貼都會出現,我就不贅述了。做完效果是這樣的:在這裏插入圖片描述
然後我們在左側窗口創建一個empty創建好後左側欄框會多出一個GameObject,然後我們將plane們都拖入GameObject欄成爲這樣。並將GameObject重命名爲Road在這裏插入圖片描述然後我們複製一個Road並粘貼到左側邊框,出現Road(1),將Road的 position設置爲(0,0,0) Road(1)的 position設置爲(0,0,30)讓他們連接在一起。然後我們在下方的文件筐裏創建一個文件夾,命名爲Script。然後點擊cube 選定右側的Add Component創建一個 new script (搜索欄輸入 Floor 然後點擊 new script即可創建 並命名爲Floor。)現在我們要完成的是無限路的腳本(鬼打牆)。先講一下原理:步驟是這樣的

  • 當角色走過第一組road,第一組road的Z座標增加30
  • 正好接到road(1)後面,然後當角色走過road(1)重回road時
  • road(1)也執行一樣的操作Z座標加30接到變化後的road後面

具體腳本實現

在下方文件欄裏找到剛剛創建的Floor 雙擊進入VS編輯
`

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Floor : MonoBehaviour
{   public GameObject Now;//我們先做兩個變量
    public GameObject NEXT;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()//加載
    { if(transform.position.z > Now.transform.position.z + 30)//當我們的角色走過ROAD並多出五個單位時執行
        {
            Now.transform.position = new Vector3(0, 0, NEXT.transform.position.z + 30);//讓ROAD移位到ROAD(1)後面
            GameObject change = Now;//重置NOW 和 NEXT(互換)
            Now = NEXT;
            NEXT = change; 
        }
        
    }
}

這個就是無限路,我們再講 ROAD 和 ROAD(1)分別填入 這個script。如圖右下方 Floor處將Road和Road(1)分別拖入對應位置在這裏插入圖片描述

然後我們開始做下一項讓角色動起來

點擊cube這次創建一個名字爲 Run的new script創建方式跟之前一樣養成一個好習慣 要在下方文件欄裏創建一個Script文件夾專門裝Script文件哦( • ̀ω•́ )✧現在我們進入文件夾 雙擊剛剛創建的Run script開始編輯

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Run : MonoBehaviour
{
    public float speed = 2;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        transform.Translate(new Vector3(0, 0, speed* Time.deltaTime))//使speed具有實際意義真正使他動起來
    }
}

好了 這一部分也實現了。現在我們運行一下試一下效果。嗯 十分的順利。我們順利的讓這個cube感覺到了鬼打牆 φ(>ω<*)

還有一個知識也是比較重要的 是這行

 transform.Translate(new Vector3(0, 0, speed* Time.deltaTime))//使speed具有實際意義真正使他動起來

這裏面的 Time*deltaTime 很多人就只是記住了這個不知道爲什麼,這個說明一下,如果不加後面這個的話,會有一個結果那就是配置好的電腦在運行同一段距離所用的時間不同或者說有明顯差異(在不同幀的控制下),這明顯是不行的,像咱這個小項目還體現不出來什麼,但您試想一下,你要是那天玩遊戲跟人solo你跟對面放同一個技能結果對方電腦配置高讀條比你快幾倍可還行玩家心態會爆炸的。但是在加上後面這部分後,再重新控制在不同幀下運行可以發現差異會變得很小。

如果對您有用 請大爺賞小的個贊吧!!(灬°ω°灬) (✪ω✪) (系列剛開始更新嘿嘿)

哎 可憐的大學生要簽到去了 …

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章