巧用Unity 2D功能:只需六步開發簡單的2D UFO遊戲

2021-01-20 CSDN

無論我們現在可以選擇多少種類繁多的,擁有逼真畫面感的遊戲,2D遊戲始終會在玩家們的心中佔據一席之地,而對於想邁入開發者行列的同學們來說,先嘗試做一款2D遊戲無疑是合適的起點。Unity中的2D功能讓開發此類遊戲更加的便捷,這篇教程將教大家使用Unity 2D功能製作一個非常簡單的UFO遊戲,整個過程只需要6個步驟,適合Unity初學者以及對Unity的2D功能不甚熟悉的開發者們,希望Unity能讓你初嘗遊戲開發的樂趣,為以後的開發之路奠定基礎,你準備好完成這款簡單的2D遊戲了嗎?

第一步 新建項目設置場景

首先下載項目所需的資源,或者在Asset Store中下載Unity官方的2D UFO Tutorial。

新建2D項目,在Assets文件夾下新建三個文件夾:Prefabs、Scripts、Scenes。將下載的資源導入項目,會看到Sprites文件夾。將Sprites文件夾下的Background和UFO圖片拖拽至層級視圖(Hierarchy),將UFO重命名為Player。如下:

依次點擊菜單項Edit > Project Settings > Tags and Layers,新建三個Sorting Layer分別命名為Background、Pickups和Players,然後設置各Sprite的Sorting Layer。

將Player的Scale設為(0.75, 0.75, 0),如下:

將Main Camera的Size設為16.5,背景顏色設為RGB(32, 32, 32),如下:

將場景保存到新建的Scenes文件夾下,任意命名即可,本例中命名為Main。

第二步 添加控制主角的腳本

首先為Player遊戲對象添加Rigibody 2D組件。然後新建腳本CompletePlayerController

用於控制Player對象,腳本代碼如下:

using UnityEngine;

using System.Collections;

//Adding this allows us to access members of the UI namespace including Text.

using UnityEngine.UI;

public class CompletePlayerController : MonoBehaviour {

public float speed; //Floating point variable to store the player’s movement speed.

public Text countText; //Store a reference to the UI Text component which will display the number of pickups collected.

public Text winText; //Store a reference to the UI Text component which will display the 『You win』 message.

private Rigidbody2D rb2d; //Store a reference to the Rigidbody2D component required to use 2D Physics.

private int count; //Integer to store the number of pickups collected so far.

// Use this for initialization

void Start()

{

rb2d = GetComponent ();

count = 0; //Initialze winText to a blank string since we haven't won yet at beginning. winText.text = ""; //Call our SetCountText function which will update the text with the current value for count. SetCountText (); }

//Store the current horizontal input in the float moveHorizontal. float moveHorizontal = Input.GetAxis (「Horizontal」);

//Store the current vertical input in the float moveVertical. float moveVertical = Input.GetAxis (「Vertical」);

//Use the two store floats to create a new Vector2 variable movement.

Vector2 movement = new Vector2 (moveHorizontal, moveVertical);

rb2d.AddForce (movement * speed);

}

//OnTriggerEnter2D is called whenever this object overlaps with a trigger collider. void OnTriggerEnter2D(Collider2D other)

//Check the provided Collider2D parameter other to see if it is tagged 「PickUp」, if it is…

if (other.gameObject.CompareTag (「PickUp」))

//… then set the other object we just collided with to inactive. other.gameObject.SetActive(false);

//Add one to the current value of our count variable.

//Update the currently displayed count by calling the SetCountText function. SetCountText ();

//This function updates the text displaying the number of objects we』ve collected and displays our victory message if we』ve collected all of them. void SetCountText() {

countText.text = 「Count: 」 + count.ToString ();

if (count >= 12)

依次點擊Edit > Project Settings > Input設置控制鍵,如下:

將Player對象的Rigibody 2D組件的Gravity Scale屬性設為0以防止Player向下墜落,並將PlayerController腳本的Speed屬性設為10。

第三步 添加碰撞

為Player添加Circle Collider 2D組件並將Radius屬性設為2.15,如下:

接下來為背景添加碰撞體,讓玩家不要跑出牆壁。為背景邊框添加4個Box Collider 2D組件,各組件屬性設置如下:

第四步 讓攝像機跟隨主角

新建腳本CompleteCameraController綁定到Main Camera上,用於控制相機跟隨主角移動。腳本代碼如下:

public class CompleteCameraController : MonoBehaviour {

//Public variable to store a reference to the player game object

private Vector3 offset;

void Start ()

//Calculate and store the offset value by getting the distance between the player’s position and camera’s position.

offset = transform.position - player.transform.position;

// LateUpdate is called after Update each frame

void LateUpdate ()

// Set the position of the camera’s transform to be the same as the player’s, but offset by the calculated offset distance.

transform.position = player.transform.position + offset;

將Player遊戲對象賦給CameraController腳本的player欄位。

第五步 設置寶石

將Sprites文件夾下的Pickup圖片拖拽至層級視圖,將其Sorting Layer設為Pickup並添加Circle Collider 2D組件。然後新建腳本CompleteRotator用於旋轉寶石,腳本代碼如下:

//Update is called every frame

//Rotate thet transform of the game object this is attached to by 45 degrees, taking into account the time elapsed since last frame.

transform.Rotate (new Vector3 (0, 0, 45) * Time.deltaTime);

將該遊戲對象拖拽至項目視圖(Project)的Prefabs文件夾下存為預設體,在層級視圖複製出11個寶石對象。然後在層級視圖新建GameObject命名為Pickups,並將這12個對象均拖至Pickups下,分別設置合適的位置,如下圖:

將Pickup預設體的Tag設為PickUp,並將所有Pickup對象的Circle Collider 2D組件的isTrigger屬性勾選上:

第六步 添加UI

右鍵點擊層級視圖,在彈出菜單中選擇UI > Text新建文本,層級視圖中除了Text外還會添加Canvas和EventSystem組件。將新建的Text命名為CountText,在檢視面板中打開Rect Transform的錨點設置面板後按下Shift+Alt/Option鍵點選左上角,讓Text自動吸附到界面左上角並選擇合適的文本顏色,如下圖:

再次新建Text命名為WinText,將字體大小設為24,對齊位置設為中間並選擇合適的顏色,如下圖:

最後,將剛才新建的兩個Text分別賦給PlayerController腳本的CountText及WinText欄位,如下圖:

到此就大功告成了,最後運行效果如下:

同學們如果想掌握更多Unity 2D開發的知識與技巧,通過更系統的學習變身Unity技術達人,創造出夢想中的遊戲,請關注「技術閃耀未來-Unity全球技術校園行」。

「技術閃耀未來-Unity全球技術校園行」- Unity Plus加強版開學季專屬優惠(9月1日-9月30日):

1, 特惠價格139元/月訂閱價

2, 免費獲得Unity認證開發者課程(訪問權截止到12月31日)

3, 免費獲得1款資源工具包:VR、2D、藝術設計和移動平臺(4選1)

點擊此連結,完成訂閱購買:https://store.unity.com/cn/offer/unity-essentials-education-packs?login=1

相關焦點

  • 主流遊戲引擎都是用什麼語言來開發?
    1.unity 3d這是目前最火的遊戲引擎之一,像王者榮耀和仙劍六都是unity 3d開發的,這個引擎開發效率很高。這個引擎要用C#來開發。2.虛幻引擎如果說unity 3d是第一的遊戲引擎的話,那虛幻引擎能稱第二。這是一個開源的引擎,它製作的遊戲在畫質上比unity 3d精美的多,但開發效率不如unity 3d。《絕地求生》就是這個引擎開發的。
  • 如何製造一個簡單的2D遊戲?
    前言本文主要介紹的是我在參加學校工作室考核(是的)時開發一個簡單的2D橫板跳躍遊戲時的一些思路和開發記錄,如果你對遊戲開發比較感興趣並且想成為一個遊戲開發者的話,這篇文章或許對你會有一些幫助!如果你是一個遊戲開發者的話歡迎來和我交流:D!
  • Cocos Creator 2D 光照詳解
    在 2d 中實現基礎光照效果!文末查看完整項目 前言 本文主要講的是最基礎的光照模型(馮氏光照模型()),是一種光照的簡化模型。請務必記住以下幾個英文單詞,對學習研究非常有幫助。
  • 五種技術選擇:2D手遊美術實現方案分析
    主要瓶頸:cpu變換和節點數量 優點: 1)因為只會儲存單位拆分組件圖片,高精度單位依然只會使用較少圖片儲存內存。 在同屏單位總數可以控制在20個以下時,推薦使用2d骨骼動畫,可以對遊戲客戶端大小做出非常好的控制。 對於換裝,武器系統,2d骨骼也有先天優勢。 3、2d背景+3d角色或2d角色+3d背景等
  • 這一次,國產2d動畫戰勝了3d動畫?
    如果涉及到動畫電影,現在肯定是3d動畫要強過2d動畫一籌。這時只說國產3d連載動畫與國產2d連載動畫的比較,前幾年的時候,國產3d連載動畫確實很多方面有2d連載動畫難以具備的優勢。前幾年,首次比較大規模「國漫崛起」的網絡輿論。
  • unity業餘愛好者說一下
    unity業餘愛好者說一下,這幾天傳的關於《太吾繪卷》代碼的事幾乎都是無中生有的事...一群用.net和vs做工程的人談論第三方引擎做的遊戲...真是雞同鴨講。太吾繪卷現在針對幾個常見誤會說一下1.只有一個main (x)unity的腳本都是依附於各個精靈的,沒有main,只有update2.沒有注釋(x)你反編譯出來的代碼有注釋
  • 有沒有發現國漫3d多2d少?一個更好恰飯,另一個容易餓死!
    有關國漫3d和2d的爭論,已經持續十年有多,從當初《超獸武裝》和《虹貓藍兔七俠傳》誰更能代表國漫,到現在3d和2d誰才是國漫未來,相關的粉絲一直吵個不停。然而必須承認的事實是國漫裡3d的數量遠比2d要多。為什麼國漫裡3d的佔比會如此可怕,每年達到百分七十以上呢?
  • 使用Unity和HTML5開發移動遊戲的優缺點
    HTML5在開發移動遊戲的優勢比較明顯,但是還是有人希望能使用Unity重構。Unity由Unity Technologies開發的一個讓玩家輕鬆創建諸如三維視頻遊戲、建築可視化、實時三維動畫等類型互動內容的多平臺的綜合型遊戲開發工具,是一個全面整合的專業遊戲引擎。
  • Unity 3D 實用技巧-輕鬆掌握生成Gif動態圖與播放
    方式一:01我們知道Unity3D 自帶錄屏Unity Recorder 插件,裡面包括生成gif圖的功能。Window->Package Manager 直接搜索Unity Recorder關鍵字。
  • 一款能玩出3D眩暈的2D橫版過關遊戲《三位一體4》
    但今天的這款遊戲則是來自芬蘭的一家獨立遊戲工作室Frozenbyte的作品,《三位一體4:夢魘王子》發售於2019的10月8日,該系列累計收入了過億美元,對於筆者來說,時至今日這依然是體驗最優秀的2d橫板過關遊戲。
  • 不同需求異樣表現 2D手遊美術技術盤點(2)
    使用遊戲:雨血 龍之王冠        使用2d骨骼+序列幀動畫可以結合2d骨骼低佔用和序列幀強表現的優點。        但是製作難度很大。        優點        1)較低的內存使用量,但是大於純2d骨骼。        2)可以和純序列幀媲美的表現效果。        3)換裝和武器掛接特效掛接方便。        4)可以支持強風格遊戲。        缺點:        1)製作難度很大,需要調整工作職位分配。
  • 3D動畫和2D動畫比哪個製作成本高?
    #動畫#現在的動畫幾乎找不到純2d動畫了,都是3d+2d混用了,2d主日常畫面,3d主戰鬥畫面,據我所知,最早的應該是EVA開始使用三渲二用3d技術製作戰鬥畫面替代2d打鬥的,這個可以明顯看出來,EVA的戰鬥動作流暢度和同期的比起來(如犬夜叉、秀逗魔導士等)簡直不是一個次元的。
  • 經典2D格鬥遊戲,技能打擊感十足,《蒼翼默示錄》遊戲評測
    話不多說,今天小編要給大家介紹的是一款16年出的一款格鬥遊戲,這款遊戲有一部前作,這款是後來出的,基於前作的基礎這部也是追加了很多新的遊戲內容,讓遊戲的劇情模式更是達到了30多個小時的時間,下面就跟著小編看下《蒼翼默示錄》的遊戲評測,一款經典的2d格鬥遊戲,技能打擊感十足。
  • 使用unity製作RPG遊戲3——2D精靈
    context=%7B%22nid%22%3A%22news_9564882242542237691%22%2C%22sourceFrom%22%3A%22bjh%22%2C%22url_data%22%3A%22bjhauthor%22%7D下面需要利用Tiled2Unity把01地圖導入unity下載Tiled2Unity,在根目錄下打開可執行文件進入unity。
  • 這35個unity3D遊戲開發面試題你都掌握了嗎?
    想順利找到unity遊戲開發的工作,你就得順利通過筆試和面試的專業考核,所以在平時中公教育陝西優就業西安it培訓小編就建議大家能收集並積累一些常見面試題。那樣在求職需要時,稍加複習就可以了,今天給大家分享的這35個常見的面試題,不知道大家都掌握了嗎?一:什麼是協同程序?
  • 3D動畫逐漸取代2D動畫?國產動畫給了我們相反的答案
    一定程度上,它們讓國產2d連載動畫,一舉趕超了3d連載動畫。01國產2d動畫輸在了哪裡?國產2d動畫的歷史就不說了。新時代過後,國產2d動畫隨著網絡動畫迅速發展而崛起。但是國產2d動畫發展到了現在,尤其是2010年後發展起來的2d動畫,一直有個很大的問題。那就是懸在頭頂的「像日漫」的問題。
  • Steam特惠:受苦到停不下來,打擊感十足的2D版黑暗之魂迎來史低
    此次G胖開啟的滿一百減十七的剁手特惠很香,小miu這次給大家找了兩款白菜價遊戲用來湊單,但同時它們也是出自同一家廠商的兩款素質不俗的2d動作類神作哦,一起來看看吧。喜歡《魂》系列的玩家相信應該都聽說過《鹽與避難所》這款遊戲吧,近日其開發商Ska Studios在steam開啟了限時特惠,《鹽與避難所》平史低15元,一時讓小miu沒忍住剁手的欲望(笑)。
  • 背後是國產3D動畫和2D動畫的戰爭
    如果說到連載動畫,我個人曾經一度強烈支持發展3d動畫,2d動畫當然也要發展但可能會輸。原因就日本2d動畫全面佔有,成熟並且系統性。國產2d動畫絕大多數就是在學習日本,很難超越系統本身。比如奇幻類的,我們能找一堆。
  • Unity官方新手遊戲項目推薦合集
    圖片來源於Unity官方公眾號  Unity Playground 是 Unity首個專門面向純初學者、教學者和任何尋求簡單形式遊戲開發入門介紹的人所設計的2D項目。如果需要Unity編輯器的完整功能,你可以關閉定製的簡化部分,恢復完整的控制功能。  Unity Playground項目中有6個非常簡單的小遊戲,它們僅使用了項目中的美術資源和腳本來構建。這些遊戲包括:塔防遊戲、雙人足球遊戲、迷宮遊戲、《Lunar Lander》類遊戲、自由漫遊和收集物品的冒險遊戲、以及包含簡單的庫存和合成系統的Roguelike遊戲。
  • 使用Unity 粒子系統實現 2D 人物足跡效果
    之後深入一想腳本大概要怎麼寫,感覺頭大的不行,又想到了 Hierarchy 裡面被 FootStep12345678 塞得滿滿當當的壯麗場面..還是換個方法吧 轉念一想:unity 的粒子系統似乎可以滿足所有特性:生成淡出銷毀全自動,跟隨人物也是基本操作,比較存疑的就是用腳本控制粒子的鏡像與旋轉。