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

更新於 發佈於 閱讀時間約 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
106會員
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
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
遊戲產業似乎從很久以前,各種玩法的類型都已經確立了下來。現在新出品的遊戲,更像是已有玩法機制的排列組合、重新包裝。比起遊戲本身,遊戲公司更願意把創意放在有明確衡量標準的部分,如:劇情、音樂、特效…等。久而久之,人們對遊戲的評價越來越取決於美術、故事等決定表現力的指標...
Thumbnail
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
Thumbnail
這篇內容,簡單介紹了GameMaker的遊戲製作原理。包括Object、參數、程式碼等概念。同時也簡單介紹了GameMaker的適用範圍和特色。
Thumbnail
Steam上的遊戲製作工具那麼多,到底哪個比較好用呢? 我只能說,每個人的能力和想製作的遊戲類型都不同,適合的工具當然也不會一樣,只能你自己去選擇最適合的。 雖然沒有辦法推薦最適合你的,但可以告訴你避開地雷工具的訣竅!
Thumbnail
本書標題「子彈」,書中人物彼此擊發子彈,讀者必須要在這一片槍林彈雨中掩蔽,但仍會被流彈波及,讀到後來乾脆振臂高揮,對著子彈吶喊「有種正面上我啊!」
Thumbnail
一、了解思維 二、大量體驗 三、拆解架構 四、找出樂趣
Thumbnail
這篇文章討論了遊戲美術專案執行和技術面可能遇到的問題,包括人的問題以及技術困難,並提出瞭解決方法。
Thumbnail
建立幾個變數如下,最上面兩個變數值為清單值 接下來分別設定球1位置到左上角落、設定球2位置到右上角落、設定球3位置到左下角落、設定球4位置到右下角落 當螢幕初始化的時候,設定玩家球的X、Y座標和大小,並將玩家球的初始顏色,設定成(變數_顏色清單)中.....
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇內容,將會講解什麼是腳本函式,以及與腳本函式相關的知識。包括腳本的簡介、使用函式(或全域變數)的注意事項、定義全域變數、定義函式、什麼是宣告、局部變數的應用。
Thumbnail
遊戲產業似乎從很久以前,各種玩法的類型都已經確立了下來。現在新出品的遊戲,更像是已有玩法機制的排列組合、重新包裝。比起遊戲本身,遊戲公司更願意把創意放在有明確衡量標準的部分,如:劇情、音樂、特效…等。久而久之,人們對遊戲的評價越來越取決於美術、故事等決定表現力的指標...
Thumbnail
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
Thumbnail
這篇內容,簡單介紹了GameMaker的遊戲製作原理。包括Object、參數、程式碼等概念。同時也簡單介紹了GameMaker的適用範圍和特色。
Thumbnail
Steam上的遊戲製作工具那麼多,到底哪個比較好用呢? 我只能說,每個人的能力和想製作的遊戲類型都不同,適合的工具當然也不會一樣,只能你自己去選擇最適合的。 雖然沒有辦法推薦最適合你的,但可以告訴你避開地雷工具的訣竅!
Thumbnail
本書標題「子彈」,書中人物彼此擊發子彈,讀者必須要在這一片槍林彈雨中掩蔽,但仍會被流彈波及,讀到後來乾脆振臂高揮,對著子彈吶喊「有種正面上我啊!」
Thumbnail
一、了解思維 二、大量體驗 三、拆解架構 四、找出樂趣
Thumbnail
這篇文章討論了遊戲美術專案執行和技術面可能遇到的問題,包括人的問題以及技術困難,並提出瞭解決方法。
Thumbnail
建立幾個變數如下,最上面兩個變數值為清單值 接下來分別設定球1位置到左上角落、設定球2位置到右上角落、設定球3位置到左下角落、設定球4位置到右下角落 當螢幕初始化的時候,設定玩家球的X、Y座標和大小,並將玩家球的初始顏色,設定成(變數_顏色清單)中.....