Unity2D 街機風太空射擊游戲 學習記錄 #12環射道具的引入

概述

這是一款基于Unity引擎開發的2D街機風太空射擊游戲,筆者并不是游戲開發人,作者是siki學院的涼鞋老師。

筆者只是學習項目,記錄學習,同時也想幫助他人更好的學習這個項目

作者會記錄學習這一期用到的知識,和一些代碼邏輯。

項目地址:學習地址

由于筆者已經跟著視頻做了10期,所以這個記錄博客不會很連貫。

這里筆者也把自己跟做的項目開源到了碼云上
項目地址

1 引入新的道具圖標

為什么要取消勾選Generate Physics Shapes
在這里插入圖片描述
如果勾選了Generate Physics Shapes,Unity就會自動給當前游戲物體增加碰撞體積,使該物體能和其他碰撞體進行碰撞。

2 PowerUpCircle 腳本

吃到這個道具的代碼邏輯跟吃到隱身和散射是一樣的。

start方法中使得道具刷新出來之后向屏幕中心移動
update方法中檢測道具是否超出屏幕,如果超出屏幕則銷毀這個游戲對象

道具向世界坐標系原點 (0,0) 直線移動的邏輯

向量的歸一化

當我們只關心向量的方向,而不關心長度的時候,可以考慮對向量進行歸一化。所謂歸一化,就是將向量的長度轉變為1,而其方向不發生變化。

在Unity/C#中,我們可以用nornalized將一個Vector2向量進行歸一化。

transform.position是獲取當前物體在世界坐標系中的位置坐標
transform.position.nornalized是將這個坐標向量轉化為方向(方向相同,但是長度為1)
GetComponent<Rigidbody2D>().velocity 獲取該游戲對象的Rigidbody2D組件,設置其速度方向為指向世界坐標系原點但是大小為1的向量,由于有負號,所以方向會反轉
這樣道具生成之后就會向世界坐標系原點進行移動。

在這里插入圖片描述

吃到道具的邏輯

這里跟吃到前面隱身和散射道具的邏輯是一樣的。
Player腳本的OnTriggerEnter2D方法中,通過
other.gameObject.name.StartsWith("powerUp")
當主角碰撞到到的游戲對象的名字以powerUp開頭的時候,就可以通過下面的方法去獲得該游戲對象上面的道具組件,如果不是空,則代表吃到了對應的道具。
var ghost = other.gameObject.GetComponent<PowerUpGhost>()
var spread = other.gameObject.GetComponent<PowerUpSpread>()
var circle = other.gameObject.GetComponent<PowerUpCircle>()

環射的實現

            // 吃到了子彈環射道具if (powerUpCircle != null){// 更新射擊子彈狀態isPowerUpCircle = true;// 播放音效transform.Find("SfxPowerUp").GetComponent<AudioSource>().Play();// 播放特效ParticleSystem fx = Instantiate(Game.Default.powerUpFx, null);fx.transform.position = other.transform.position;fx.gameObject.SetActive(true);fx.Play();// 右上角道具顯示Sprite icon = Game.Default.powerUpCircle.GetComponent<SpriteRenderer>().sprite;// 回調函數,倒計時結束之后隱藏隱身文本Game.Default.uiPowerUps.AddPowerUp(icon,  3, () => {isPowerUpCircle = false;// 倒計時結束之后隱藏隱身文本});Destroy(other.gameObject);}

道具掉落的隨機邏輯

在這里插入圖片描述

通過全局管理類Game克隆一個環射道具預制體
將其位置設置到子彈碰撞的位置
然后將其綁定的游戲對象進行顯形

這里為什么要用克隆

如果直接修改原預制體會影響后續所有生成的對象,所以我們克隆一個。

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

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

相關文章

網站如何啟用HTTPS訪問?本地內網部署的https網站怎么在外網打開?

在互聯網的世界里&#xff0c;數據安全已經成為了每個網站和用戶都不得不面對的問題。近期&#xff0c;網絡信息泄露事件頻發&#xff0c;讓越來越多的網站開始重視起用戶數據的安全性&#xff0c;因此啟用HTTPS訪問成為了一個熱門話題。作為一名網絡安全專家&#xff0c;我希望…

計算機網絡-----詳解網絡原理TCP/IP(上)

文章目錄 &#x1f4d5;1. UDP協議??1.1 UDP的特點??1.2 基于UDP的應用層協議 &#x1f4d5;2. TCP協議??2.1 TCP協議段格式??2.2 TCP協議特點之確認應答??2.3 TCP協議特點之超時重傳??2.4 TCP協議特點之連接管理??2.5 TCP協議特點之滑動窗口??2.6 TCP協議特點…

Lora訓練

一種大模型高效訓練方式&#xff08;PEFT&#xff09; 目標&#xff1a; 訓練有限的ΔW&#xff08;權重更新矩陣&#xff09; ΔW為低秩矩陣→ΔWAB&#xff08;其中A的大小為dr, B的大小為rk&#xff0c;且r<<min(d,k)&#xff09;→ 原本要更新的dk參數量大幅度縮減…

藍牙 5.0 新特性全解析:傳輸距離與速度提升的底層邏輯(面試寶典版)

藍牙技術自 1994 年誕生以來,已經經歷了多次重大升級。作為當前主流的無線通信標準之一,藍牙 5.0 在 2016 年發布后,憑借其顯著的性能提升成為了物聯網(IoT)、智能家居、可穿戴設備等領域的核心技術。本文將深入解析藍牙 5.0 在傳輸距離和速度上的底層技術邏輯,并結合面試…

Minio使用https自簽證書

自簽證書參考&#xff1a;window和ubuntu自簽證書_windows 自簽證書-CSDN博客 // certFilePath: 直接放在 resources 目錄下 或者可以自定實現讀取邏輯 // 讀取的是 .crt 證書文件public static OkHttpClient createTrustingOkHttpClient(String certFilePath) throws Excep…

汽車前縱梁焊接總成與沖壓件的高效自動化三維檢測方案

汽車主體結構件上存在很多安裝位&#xff0c;為保證汽車裝配時的準確性&#xff0c;主體結構件需要進行全方位的尺寸和孔位置精度檢測&#xff0c;以確保裝配線的主體結構件質量合格。 前縱梁焊接總成是車身框架的核心承載部件&#xff0c;焊接總成由多片鈑金沖壓件焊接組成&a…

F接口基礎.go

前言&#xff1a;接口是一組方法的集合&#xff0c;它定義了一個類型應該具備哪些行為&#xff0c;但不關心具體怎么實現這些行為。一個類型只要實現了接口中定義的所有方法&#xff0c;那么它就實現了這個接口。這種實現是隱式的&#xff0c;不需要顯式聲明。 目錄 接口的定…

cartographer官方指導文件說明---第3章 cartographer前端算法流程介紹

cartographer官方指導文件說明 第3章 cartographer前端算法流程介紹 3.1 Scan Match掃描匹配 掃描匹配&#xff08;Scan Matching&#xff09;是 Cartographer 中實現局部SLAM的核心技術&#xff0c;它通過優化算法將當前激光掃描數據對齊到子圖地圖中。下面從計算過程、數學…

汽車整車廠如何用數字孿生系統打造“透明車間”

隨著工業4.0時代的發展&#xff0c;數字孿生技術已成為現代制造業的重要利器。特別是在汽車整車廠&#xff0c;通過數字孿生系統的應用&#xff0c;能夠有效打造一個“透明車間”&#xff0c;實現生產過程的全面可視化與實時監控&#xff0c;提高生產效率&#xff0c;降低成本&…

openKylin適配RISC-V高性能服務器芯片,攜手睿思芯科共拓智算新藍海

3月31日&#xff0c;睿思芯科&#xff08;深圳&#xff09;技術有限公司&#xff08;簡稱“睿思芯科”&#xff09;2025春季新品發布會在深圳前海國際會議中心盛大舉行&#xff0c;作為RISC-V領域的年度盛事&#xff0c;此次發布會吸引了眾多業內目光。此次發布會上&#xff0c…

【已解決】lxml.etree.ParserError: Document is empty

本專欄解決日常生活工作中非快速找到解決方案的問題。 問題背景 在爬取某網站時&#xff0c;使用開源框架報錯&#xff1a;lxml.etree.ParserError: Document is empty 解決方案 1、多個搜索引擎中查找&#xff0c;建議都是對lxml的python源碼進行修改&#xff0c;不好用。…

mac電腦調試iphone真機safari網頁

mac電腦調試iphone真機safari網頁 start 本文主要是記錄一下如何調試蘋果手機上的safari的網頁 方法 1.蘋果手機打開 web檢查器 操作步驟&#xff1a; 打開設置搜索safari最底部“高級”開啟“網頁檢查器” 2.mac電腦打開safari 操作步驟&#xff1a; 先用數據線連接手機和…

opencv依據圖像類型讀取圖像像素點

Mat數據類型和通道對應的type()&#xff1a; 庫類型C1C2C3C4CV_8U081624CV_8S191725CV_16U2101826CV_16S3111927CV_32S4122028CV_32F5132129CV_64F6142230 通過c程序查看類型并讀取圖像像素點&#xff1a; switch (im->type()){case 0:std::cout << "at (&quo…

軟件架構的發展歷程——從早期的單體架構到如今的云原生與智能架構

軟件架構的發展歷程是技術演進與業務需求相互驅動的結果&#xff0c;從早期的單體架構到如今的云原生與智能架構&#xff0c;每一步都在突破系統的可擴展性、靈活性和效率邊界。以下是其核心發展脈絡及未來趨勢的全景解析&#xff1a; 一、發展歷程&#xff1a;從單體到智能的…

Oracle 基礎語句大全:從數據定義到復雜查詢

一、DDL&#xff08;數據定義語言&#xff09;&#xff1a;定義數據庫結構 1. 創建表&#xff08;CREATE TABLE&#xff09; -- 語法格式 CREATE TABLE [schema.]table_name (column1 datatype [CONSTRAINT constraint1],column2 datatype [DEFAULT default_value],-- 表級約…

【學習筆記】鎖+死鎖+gdb調試死鎖

【學習筆記】鎖死鎖gdb調試死鎖 一、互斥鎖&#xff08;std::mutex&#xff09; 最基本的鎖類型&#xff0c;提供排他性訪問&#xff0c;同一時間僅允許一個線程持有鎖。 #include <iostream> #include <mutex> #include <thread>std::mutex mtx; // 全局…

Flutter中將bytes轉換成XFile對象上傳

在Flutter中將字節數據(bytes)轉換為XFile對象并上傳可以通過以下步驟實現&#xff1a; 1.字節數據轉臨時文件 首先需要將字節數據寫入臨時文件&#xff0c;可以使用dart的File類實現&#xff1a; final tempDir await getTemporaryDirectory(); final file File(${tempDi…

餅圖:數據可視化的“切蛋糕”藝術

餅圖&#xff0c;作為數據可視化家族中最經典、最易識別的成員之一&#xff0c;其核心功能如同其名——像切分蛋糕一樣&#xff0c;直觀展示一個整體&#xff08;100%&#xff09;被劃分為若干組成部分的比例關系。 往期文章推薦: 20.用Mermaid代碼畫ER圖&#xff1a;AI時代的…

Flutter - 原生交互 - 相機Camera - 曝光,縮放,錄制視頻

曝光 Flutter上CupertinoSlider組件的樣式是iOS上的Slider,使用該組件控制曝光量, Camera插件提供的API是CameraController的 Future<double> setExposureOffset(double offset) async {... }最后調用iOS端的系統方法控制曝光值 - (void)setExposureTargetBias:(floa…

Python中布爾值在函數中的巧妙運用

在 Python 中&#xff0c;布爾值&#xff08;True 和 False&#xff09;不僅可以用于簡單的條件判斷&#xff0c;還可以在函數中發揮強大的作用。通過合理使用布爾值&#xff0c;你可以使函數更加靈活、高效且易于理解。今天&#xff0c;就讓我們一起深入探討如何在函數中巧妙運…