Unity C# | 子彈射擊與命中的思路

更新於 2023/05/31閱讀時間約 4 分鐘

一、前言

  這篇文章將會講述子彈射擊與命中的思路,不包含實際程式設計。

二、思路

  僅撰寫思路的原因,主要有兩個方面,第一個是撰寫思路的文章更容易傳載到其他平台,並且因為不包含實作,能更快速的介紹設計思路;第二個是撰寫思路的文章應用更廣,2D或3D遊戲均適用,只要有射擊的要素就能參考。

1. 撰寫便捷

  本文主要有兩種類型的讀者,第一種讀者是遊戲設計的門外漢,對於遊戲設計好奇,想知道該遊戲會怎麼設計;第二種讀者是遊戲設計精熟,相較於看影片模仿,更希望自行研究或快速閱讀參考。
  對於遊戲設計入門或好奇者,本文建議尋找專業的 Youtube 影片,跟隨影片步驟進行遊戲程式撰寫,會比閱讀文章更高效且明確,也不用因此擔心自己是否做錯,是更加高效的學習方式。

2. 應用更廣

  無論是2D遊戲或3D遊戲,子彈設計都需要這些要素,射擊子彈並非單純的把子彈射出即可,還要包含初始化、初速度、命中角度,除此之外還需要準備兩種製作好的素材,因此能藉由思路學習射擊的要素。
  本文結合第三人稱射擊遊戲官方素材包與Youtube教學為雛型,結合作者自行購買的子彈特效素材包中的子彈程式,撰寫成思路作為紀錄,並分享給任何對射擊遊戲有興趣的人閱讀。

三、子彈射擊

  本文章將會從準備物件到子彈三個階段進行介紹,準備的物件包含子彈、特效、位置;子彈三階段包含發射、飛行、命中,本文章不包含事後計算與音效。

1. 準備子彈物件

  第一個要準備的東西,是子彈的物件,此物件為一個預製物(Preferb),其包含子彈的碰撞體、剛體、自身攜帶的特效,依據子彈是否要拋物線,決定是否啟用引擎自帶重力。
  若子彈物件有可能命中玩家,請在遊戲中的玩家與預製物中設定標籤,並在專案設定(Project Setting)中讓此兩個標籤不會相互碰撞,這樣可以防止子彈在發射的當下就命中玩家。

2. 準備命中特效

  當子彈命中物體時,會需要使用標籤(Tag)或組件(Component)或介面(Interface)來判斷命中的對象是否為目標物件(敵人、背景、玩家),並觸發對應的音效與特效。
  當子彈命中後,要觸發特效,如果此特效為爆發式或有明確方向,其爆發噴射方向建議為Y軸正向,也就是在預製物視角中,爆發方向要朝正上方進行粒子特效的播放。

3. 準備射擊位置

  如果發射子彈的主體是玩家,那就要決定在玩家的哪個位置發射,將其遠離玩家一小段距離,讓其發射子彈時不會直接命中玩家,並且依據遊戲需求決定玩家移動與轉向是否會改變射擊位置。
  目前我在撰寫第三人稱射擊遊戲時,有遇到的一個狀況為因為子彈是往鏡頭的正前方發射,所以在非瞄準的情況下,玩家射擊會命中玩家,因此要用程式去控制射擊位置,或讓子彈不會命中玩家。

4. 子彈發射

  當我們按下發射按鍵後,會在射擊位置生成一個子彈,此子彈的方向與預製物中的方向相同,因此要設定此子彈的正前方為發射方向的正前方,並讓子彈自己往正前方前進。
  如果遊戲中玩家與敵人都會發射子彈,使用物件池進行物件生成與控管是更好的程式撰寫方式,除了節省資源以外,還可以讓廢棄資料減少。

5. 子彈飛行

  當子彈被射擊出去以後,此時會噴射粒子特效。如果遊戲需要讓子彈在飛行的過程中有所變化,可以讓子彈的維持預設的剛體模式,能運用給予範圍內的物件推力營造輕物件飛行的飄逸感。

6. 子彈命中

  當子彈命中的時候,會需要計算傷害與觸發回饋,通常粒子特效都都有方向性,因此要確定命中的面,並讓粒子特效的爆發方向為命中面的正前方,這樣能讓子彈命中的回饋更確定。
  關於傷害計算,可以參考我之前撰寫的一篇文章,在最後有附相關的教學影片可以觀看,裡面有使用介面(Interface)進行傷害系統的撰寫。

五、後記

  這篇文章寫起來其實蠻花時間,不過也相當有成就感就是了,子彈射擊與命中是最近撰寫遊戲的內容,所以想了想就撰寫成文章了。
為什麼會看到廣告
avatar-img
105會員
247內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
瓶裝雪的沙龍 的其他內容
一、前言   這篇文章將會簡單介紹物件導向的設計模式,以及學習這項技術需要有哪些先備知識,學習才會比較順利。 二、設計模式   在物件導向中,除了最基本的五大原則以外,其實還有一知名的概念,那就是設計模式(Design Pattern),它能運用到很多層面。 1. 解決一再出現的問題   許多程式設
這篇文章將會講述最近的一個程式設計體悟,並且分享近期要參加的獨立遊戲製作者聚會,會展示課程的其中一個作品。
這篇文章將會分享與老師討論,在遊戲設計中設計元素之間的比重與遊戲要注重的設計重點或賣點。
這篇文章將會介紹 Unity Input System,這是一個適用於不同平台切換的官方系統,用於玩家按鍵輸入與不同控制器的操作。
這篇文章將會快速介紹非同步函式(Async / Await)的簡易使用方式。
這篇文章將會介紹 UGUI ,以及如何使用程式碼控制 UGUI 的座標。
一、前言   這篇文章將會簡單介紹物件導向的設計模式,以及學習這項技術需要有哪些先備知識,學習才會比較順利。 二、設計模式   在物件導向中,除了最基本的五大原則以外,其實還有一知名的概念,那就是設計模式(Design Pattern),它能運用到很多層面。 1. 解決一再出現的問題   許多程式設
這篇文章將會講述最近的一個程式設計體悟,並且分享近期要參加的獨立遊戲製作者聚會,會展示課程的其中一個作品。
這篇文章將會分享與老師討論,在遊戲設計中設計元素之間的比重與遊戲要注重的設計重點或賣點。
這篇文章將會介紹 Unity Input System,這是一個適用於不同平台切換的官方系統,用於玩家按鍵輸入與不同控制器的操作。
這篇文章將會快速介紹非同步函式(Async / Await)的簡易使用方式。
這篇文章將會介紹 UGUI ,以及如何使用程式碼控制 UGUI 的座標。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
最近ChatGPT-4o的發布引起了我的注意,又在Youtube看上見有人教學如何用ChatGPT設計屬於自己的家教,被他的能力震撼到的我一頭熱就訂閱了plus版然後馬上設計了一個自己的家教。最一開始的時候我只有把它用來學習語言的輔助,但用著用著忽然想到:「如果我把它用來引導我學習我沒有學過的領域呢
Thumbnail
遊戲引擎開發商 Unity 一直是我感覺很有發展潛力的企業,《原神》、《王者榮耀》等明星遊戲都是透過其引擎所建構,在手遊開發領域,擁有絕對統治力。然而,營運實績與線圖走勢卻不是如此,近 8 季毛利成長率有 4 季為負,1Q24 營運收入是近 8 季來最低值,-$375M…
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
Unity (美股代號:U) 是全球最大的遊戲製作平台與龍頭引擎。不過股價自高點滑落並盤據20-30元已經有一段時間。此次財報非常樂觀,值得一看。
Thumbnail
開啟Xampp伺服器,並啟動 apache & mysql mysql建立 開啟Unity 建立 Script toPhp.cs Unity物件 toWeb物件設定 此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤 Button 設定 test.php con
  透過Unity平台開發出來的遊戲,比較廣為人知,例如憤怒鳥和寶可夢。Unity 的遊戲開發技術,可以刺激遊戲產業,更朝氣蓬勃有效率地開發新遊戲用戶透過遊戲平台,就可以進入元宇宙的世界!
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
最近ChatGPT-4o的發布引起了我的注意,又在Youtube看上見有人教學如何用ChatGPT設計屬於自己的家教,被他的能力震撼到的我一頭熱就訂閱了plus版然後馬上設計了一個自己的家教。最一開始的時候我只有把它用來學習語言的輔助,但用著用著忽然想到:「如果我把它用來引導我學習我沒有學過的領域呢
Thumbnail
遊戲引擎開發商 Unity 一直是我感覺很有發展潛力的企業,《原神》、《王者榮耀》等明星遊戲都是透過其引擎所建構,在手遊開發領域,擁有絕對統治力。然而,營運實績與線圖走勢卻不是如此,近 8 季毛利成長率有 4 季為負,1Q24 營運收入是近 8 季來最低值,-$375M…
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
Unity (美股代號:U) 是全球最大的遊戲製作平台與龍頭引擎。不過股價自高點滑落並盤據20-30元已經有一段時間。此次財報非常樂觀,值得一看。
Thumbnail
開啟Xampp伺服器,並啟動 apache & mysql mysql建立 開啟Unity 建立 Script toPhp.cs Unity物件 toWeb物件設定 此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤 Button 設定 test.php con
  透過Unity平台開發出來的遊戲,比較廣為人知,例如憤怒鳥和寶可夢。Unity 的遊戲開發技術,可以刺激遊戲產業,更朝氣蓬勃有效率地開發新遊戲用戶透過遊戲平台,就可以進入元宇宙的世界!