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

2020-12-13 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

相關焦點

  • Cocos 2d-JS中文版API文檔正式上線
    HTML5技術是近兩年來移動開發世界裡的新貴。原來應用的開發者可能需要花費非常大的力氣才能達到HTML5遊戲開發的效率,需要不斷地重複編碼、調試、運行;然而HTML5手機應用的最大優勢就是可以在網頁上直接調試和修改,同時,當下市面上的主流手機瀏覽器都具備支持HTML5的能力讓基於HTML5的移動輕遊戲迅速躥紅,即點即玩又能迅速傳播正在成為行業標杆。
  • 主流遊戲引擎都是用什麼語言來開發?
    1.unity 3d這是目前最火的遊戲引擎之一,像王者榮耀和仙劍六都是unity 3d開發的,這個引擎開發效率很高。這個引擎要用C#來開發。2.虛幻引擎如果說unity 3d是第一的遊戲引擎的話,那虛幻引擎能稱第二。這是一個開源的引擎,它製作的遊戲在畫質上比unity 3d精美的多,但開發效率不如unity 3d。《絕地求生》就是這個引擎開發的。
  • 如何製造一個簡單的2D遊戲?
    前言本文主要介紹的是我在參加學校工作室考核(是的)時開發一個簡單的2D橫板跳躍遊戲時的一些思路和開發記錄,如果你對遊戲開發比較感興趣並且想成為一個遊戲開發者的話,這篇文章或許對你會有一些幫助!如果你是一個遊戲開發者的話歡迎來和我交流:D!
  • 觸控科技: 搭建技術橋梁 Cocos 2d-x首次赴臺辦沙龍
    9月5日晚,大陸領先的手遊開發/運營商觸控科技將攜旗下的開源遊戲引擎Cocos 2d-x跨越海峽,赴臺灣舉辦分享沙龍。這是Cocos 2d-x引擎第一次在臺灣舉辦開發者沙龍,也將是「觸控開發者平臺」首次在臺灣公開亮相。
  • Unity3D 推薦的7個項目和案例練習
    target=http%3A//forum.china.unity3d.com/thread-32261-1-1.html2D遊戲開發套件指南。今年年初,Unity Brighton的內容團隊推出了他們的最新作品-2D遊戲開發套件,該套件適用於任何希望學習在Unity中創作2D遊戲的人,在不編寫任何代碼的情況下使用2D遊戲開發套件,通過設置與拖放便能快捷的實現你的遊戲創意。
  • 3d人臉識別和2d區別
    打開APP 3d人臉識別和2d區別 陳翠 發表於 2019-03-06 15:17:37   3d人臉識別和2d區別   三維人臉識別可以應對各種光線幹擾,甚至在夜晚能見度較差的環境下也可以識別人臉信息。
  • 這一次,國產2d動畫戰勝了3d動畫?
    如果涉及到動畫電影,現在肯定是3d動畫要強過2d動畫一籌。這時只說國產3d連載動畫與國產2d連載動畫的比較,前幾年的時候,國產3d連載動畫確實很多方面有2d連載動畫難以具備的優勢。前幾年,首次比較大規模「國漫崛起」的網絡輿論。
  • 一款能玩出3D眩暈的2D橫版過關遊戲《三位一體4》
    但今天的這款遊戲則是來自芬蘭的一家獨立遊戲工作室Frozenbyte的作品,《三位一體4:夢魘王子》發售於2019的10月8日,該系列累計收入了過億美元,對於筆者來說,時至今日這依然是體驗最優秀的2d橫板過關遊戲。
  • Coconut2D:跨平臺2D遊戲及應用開發工具
    Coconut2D是由來自希臘的mobileFX公司研發的一款專門用於跨平臺2D遊戲及應用開發的工具,除了其頗為酷炫的快速原型集成開發環境Coconut2D Studio之外,還包含一個擁有眾多2D遊戲及應用開發框架和庫的Coconut2D SDK,並將其託管到Github上。
  • 使用Unity和HTML5開發移動遊戲的優缺點
    HTML5在開發移動遊戲的優勢比較明顯,但是還是有人希望能使用Unity重構。Unity由Unity Technologies開發的一個讓玩家輕鬆創建諸如三維視頻遊戲、建築可視化、實時三維動畫等類型互動內容的多平臺的綜合型遊戲開發工具,是一個全面整合的專業遊戲引擎。
  • 使用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
  • SolidWorks實例:從2D到3D|CAD圖轉SolidWorks 3D建模
    01導入AutoCad三視圖文件第一步:將cad圖紙導出為dxf格式,導入solidworks。具體步驟:用AutoCAD打開dwg文件,另存為dxf格式。打開solidworks,將dxf文件拖入,此時軟體會識別並彈出輸入對話框選擇導入方式,注意兩種導入方式事實上都是可以的,導入工程圖模式需要在導入後,進入零件圖中逐一複製粘貼到相應視圖,導入零件圖會有2d到3d的轉換工具,這裡我們選擇輸入到新零件為2D草圖。去除多餘圖層,僅保留中心線和繪圖層(也可以導入完成後刪除)。直接下一步,啟用分解圖塊選是,完成。
  • 3D動畫和2D動畫比哪個製作成本高?
    #動畫#現在的動畫幾乎找不到純2d動畫了,都是3d+2d混用了,2d主日常畫面,3d主戰鬥畫面,據我所知,最早的應該是EVA開始使用三渲二用3d技術製作戰鬥畫面替代2d打鬥的,這個可以明顯看出來,EVA的戰鬥動作流暢度和同期的比起來(如犬夜叉、秀逗魔導士等)簡直不是一個次元的。
  • 獨立遊戲開發是如何讓我進退兩難的?
    簡單建議1.選擇遊戲引擎對於初學者而言,無論是什麼平臺,相對3d引擎而言,選擇先從2d遊戲引擎開始,會更輕鬆一些,至少可以先了解一下遊戲的開發機制。而我自己選擇了2d引擎之後,平臺上則選擇了手機平臺,因為它相對來說更加輕量化。我最開始也打算做3d的,但是建模這一塊完全不行。
  • 如何使用Unity5.3開發2D遊戲-視頻教程
    這個是一個2D遊戲開發的入門教程,而且使用的是最新版Unity5.3,快快下載觀看吧!!!特別適合新手來學習!
  • 2D卷積和3D卷積的區別及pytorch實現
    1.1.1 單通道卷積Pytorch實現直接使用torchvision.datasets.MNIST()導入MNIST數據集,取其中一張圖像為例,使用3×3的卷積核進行卷積:import torchimport torchvisionimport torch.nn as nninput_2d=dataprint
  • 創新2D橫軸跑酷遊戲《扶老豆回家》遊俠專題站上線
    中文名稱:扶老豆回家英文名稱:BRING DAO HOME製作公司:Poler Studio發行公司:Poler Studio遊戲類型:動作遊戲ACT遊戲平臺:PC遊戲語言:中文,英文,日文,其他發售日期:2020-06
  • opengl實踐-從零開發遊戲
    教程最後一章是一個小遊戲,從零開始實現Breakout,不但能很好的練習opengl,還能強化C++基礎,包括c++基礎語法、繼承、架構設計、功能分層等等。用一個周末的時間完整實現了一遍。/0.full_source可以看到Breakout麻雀雖小五臟俱全,遊戲分三關,有道具、後期處理、粒子特效、碰撞處理、文本提醒等等,幾乎包含了一個2D遊戲的最小實現路徑。
  • Unity面試題精選(7)
    洪流學堂,讓你快人幾步。小編整理了一些Unity面試題目,希望可以幫助到你。
  • Ghost 智能空中機器人:操作飛行僅需3步,支持點對點定點巡航
    Ghost 的操作簡單,用戶只需點擊APP上的「起飛」按鈕,選擇目的地,點擊返航,三步就能完成所有的飛行過程,大幅降低了航拍的技術門檻。 在民用飛行器領域,飛行控制系統是最難做好的。不同於目前大部分航拍飛行器需要實體控制臺操控,Ghost 完全由智慧型手機控制,而且上手很簡單。