發(fā)布時間:2024-04-08 10:57:44 瀏覽量:208次
(圖片源于網(wǎng)絡(luò),侵刪)
ps:周五給大家推薦一款利用Unity3D引擎開發(fā)的游戲,簡單易學(xué), 文末有領(lǐng)取方式喔~
提到游戲開發(fā)人們的腦海中浮現(xiàn)的要么是一個程序員孤軍奮戰(zhàn)的身影,要么是在發(fā)行商贊助下成立的游戲開發(fā)公司。今天呢就和大家分享零基礎(chǔ)如何利用Unity3D引擎開發(fā)一款第一人稱射擊單機(jī)小游戲。
1
簡單介紹一下unity3D,它是由Unity Techologies開發(fā)的一款游戲開發(fā)引擎,也是目前手機(jī)游戲和虛擬仿真領(lǐng)域最活躍、最易用的開發(fā)工具。近年來隨著移動平臺擴(kuò)張的東風(fēng),Unity幾乎成為了整個游戲以及虛擬仿真領(lǐng)域的行業(yè)標(biāo)準(zhǔn)。
其編輯器運(yùn)行在Windows 和Mac OS X下,可發(fā)布游戲至Windows、Mac、Wii、iPhone、WebGL(需要HTML5)、Windows phone 8和Android平臺。也可以利用Unity web player插件發(fā)布網(wǎng)頁游戲,支持Mac和Windows的網(wǎng)頁瀏覽。它的網(wǎng)頁播放器也被Mac 所支持。
(如國名手游王者榮耀就是采用unity開發(fā))
2
基于Unity3D和C#腳本開發(fā)的一款FPS射擊類游戲。大概劇情就是玩家可以利用手中的散彈槍擊殺暴走的機(jī)器人,且需要在規(guī)定的時間內(nèi)在地圖內(nèi)尋找到“真實的鑰匙”,如果時間耗盡或者被機(jī)器人擊殺則游戲失敗。
(隨便弄的初始界面好吧我知道很丑)
邏輯流程圖:
游戲主要功能描述:
界面部分:主要為登陸游戲界面制作。
地形部分:主要為人物模型以及游戲場景地形
粒子特效火焰粒子特效、爆炸粒子特效
音效:開槍音效、背景音樂、爆炸音效
動作控制:玩家的前進(jìn)后退左轉(zhuǎn)右轉(zhuǎn)子彈發(fā)射
3
Unity3D與Xml的交互
單機(jī)小游不需要數(shù)據(jù)庫,通過自定義一個Xml儲存數(shù)據(jù)。以登錄界面的設(shè)計為例:
這是一個名為UserInfo的內(nèi)容
<?xml version=”1.0”encoding=”UTF-8”standalone=”no”?>
<users>
<users1 姓名=”張三” 密碼=”123”>我是張三</user1>
<users2 姓名=”李四” 密碼=”123”>我是李四</user2>
上面的Xml有兩層,父節(jié)點(diǎn)叫users,子節(jié)點(diǎn)有兩個,分別為user1和user2,每個節(jié)點(diǎn)有兩個屬性,姓名和密碼。每個節(jié)點(diǎn)有一段文字內(nèi)容,要求能夠讀取每個節(jié)點(diǎn)的名稱內(nèi)容和屬性,并且能夠添加節(jié)點(diǎn)和屬性。
這是一個操作Xml讀取的類,默認(rèn)繼承Object,這個類里面主要有三個函數(shù)
Load(string filePath):通過文件路徑來加載Xml的文件內(nèi)容
LoadXml(string xmlFile):通過加載Xml文件內(nèi)的文本內(nèi)容加載Xml。
GetRootNode():用來獲取Xml的根節(jié)點(diǎn),有了這個根節(jié)點(diǎn),就可以訪問每一個子節(jié)點(diǎn)。
代碼如下:
using System;
using System.IO;
using System.Xml;//添加命名空間
publc class ReadXmlFile
{
XmlDocument xmlDocument;
Public ReadXmlFilet()
{
xmlDocument = new XmlDocunment();
}
///<summary>
///通過文件路徑導(dǎo)入Xml文件,用于單機(jī)版
///<summary>
Public bool Laod(string filePath)
{
xmlDocument.Load(filePath);
return true;
}
///<summary>
///通過加載XML文本內(nèi)容加載Xml,用于網(wǎng)頁版
///<summary>
Public bool LoadXml(string xmlFile)
{
xmlDocument.LoadXml(xmlFile);
return true;
}
//獲取根節(jié)點(diǎn)
Public XmlElement GetRootNode()
}
Return xmlDocument.DocumentElement;
}
建立一個UI界面,如圖為一個簡單的登陸界面
(我知道界面很丑!重要的是學(xué)習(xí)方法!)
將Xml文件加載進(jìn)來的代碼如下:
readXmIFile=new ReadXmlFile();
//發(fā)布為EXE訪問本地Xml的時候使用這種加載方式,這種方式發(fā)布網(wǎng)頁不支持。
readXmlFile.Load(Application.dataPath+”/Data/Xml/UserInf
開始登陸驗證,首先判斷是否存在這個用戶,如果存在獲取這個Xml節(jié)點(diǎn),將節(jié)點(diǎn)密碼這個屬性與用戶輸入的屬性進(jìn)行比較,相同則登陸成功,否則失敗。
部分代碼如下
Void OnGUI()
{
GUI.matrix=Matrix4x4.TRS(Vector3.zero,Quaternion.identity,new Vector3(GUIR.wscale,GUIRoot.hscale,I));
windowRect = GUI.WindowRect,DoMyWindow,””);
)
Void DoMy Window(int windoeID)
{
GUI.Label(new Rect(100,5,100,50),”登錄驗證”,labeIStyle);
GUI.Label(new Rect(40,65,60,40),”用戶名”,labeIStyle);
name=GUI.TextField(new Rect(105,75,100,20),name,15);
GUI.Label(new Rect(40,130,60,60),”密碼”,labeIStyle);
pwd=GUI.TextField(new Rect(105,145,100,20),pwd,15);
if(GUI.Button(new Rect(100,200,100,40)”Login”))
{
}
}
粒子特效實現(xiàn)
射的火焰,滾滾的濃煙、螢火蟲、雨、霧或者你可以想到的其他任何效果,這些效果通常稱為粒子效果(particle effect)這里主要講述的是槍支射擊火焰效果的實現(xiàn)。
首先導(dǎo)入槍支模型,為了增加真實性。在槍口位置設(shè)置一個子物體,其子物體展示粒子效果(GameObject——ParticleSystem)其粒子效果充當(dāng)火焰特效。
游戲粒子效果如圖所示:
動畫的運(yùn)用
基本知識
動畫是預(yù)制的可視動作集,在2D游戲中,這涉及具有多福順序的圖像,并且可以非??斓姆D(zhuǎn)他們,結(jié)果就是對象看似在移動。這種效果類型于老式的翻轉(zhuǎn)書,3D世界里的動畫有很大的差別。在3D游戲中,使用模型來表示游戲?qū)嶓w,不能簡單地在模型只見切換,以提供運(yùn)動的幻覺。
Animation運(yùn)用
射擊及換子彈動畫的實現(xiàn),首先在Unity Asset Store中下載所需的模型并導(dǎo)入,動畫通常是作為模型的一部分出現(xiàn)的,Animations選項卡中包含管理內(nèi)置的動畫所需的所有屬性和控制選項。
將動畫拖到Animation組件的Animations屬性上,把它們應(yīng)用于模型,這樣使動畫可供模型使用,但是不會實際的創(chuàng)建模型的動畫,在多個動畫間的切換通過腳本完成,C#腳本如下:
void Start ()
{
aui = this.GetComponent<AudioSource>();//獲取AudioSource的組件
A = Q.GetComponent<Animation>();//獲取Animation的組件
}
void Update ()
{
if (!A.IsPlaying ("Gun02Reload"))
{
if (Input.GetMouseButtonDown (0)&&IsAttck==true )
{
Zcount++;//計算子彈個數(shù)
if (Zcount==5) {
A.Play("Gun02Reload");
Zcount = 0;
} else {
A.Play("Gun02Shoot");
}//判斷播放動畫
IsAttck = false;//禁止開槍
Invoke ("OnAttck", 1.2f);//通過延遲12S允許開槍
aui.clip = G;
aui.Play();//播放開槍音效
L.transform.gameObject.SetActive(true );//火焰粒子效果開啟
Invoke ("OFFL", 0.1f);//通過0.1S延遲關(guān)閉粒子效果
GameObject xx = Instantiate(XX);//“克隆”子彈預(yù)制件
xx.transform.position = came .transform.position;//為“克隆”的子彈賦予初始位置
xx.GetComponent<Rigidbody>().velocity = came .transform .TransformDirection (Vector3.forward) * speed;
//為子彈添加方向與力
Destroy(xx,2f);//兩秒后自動銷毀子彈
}
}
}
void OFFL(){
L.transform.gameObject.SetActive(false);
}
void OnAttck(){
IsAttck = true;
}
觸碰效果的應(yīng)用
首先我們要制作一個玩家需要去收集的物體,從Assert store下載并導(dǎo)入一3D模型。如圖導(dǎo)入的一個書本模型:
然后為了讓它能夠和玩家物體發(fā)生交互,我們將為它添加一個原型碰撞器。點(diǎn)擊菜單Component——Physice——Box Collider 因為我們不希望玩家在收集它的時候突然撞上去然后停止運(yùn)動,所以我們將它的碰撞器設(shè)置為觸發(fā)模式,在組件中勾起Is Trigger。
部分C#腳本如下:
void OnTriggerEnter(Collider col)//Player觸發(fā)事件
{
if (col.transform.tag == "DIR")//假如觸發(fā)對象的tag為“DIR”(敵人)
{
f -= 0.1f;//每攻擊一次減少0.1
S.value = f;
if (f<= 0)//血量小于等于0
{
this.transform .gameObject .SetActive (false );//關(guān)閉玩家本身
TT.fontSize = 60;//
TT.text = "你輸了!!!";
Time.timeScale = 0;//暫停游戲所有運(yùn)行
}
}
if (col.transform.tag =="B1")//當(dāng)觸發(fā)對象的tag為“B1”
{
tis.transform.gameObject.SetActive(true);
tis.text = "一頁殘卷";
Invoke("ZanT",1);//通過1S延遲關(guān)閉UI的TXT顯示
aui.clip = ZHH;
aui.Play();
}
if (col.transform.tag == "B2")//當(dāng)觸發(fā)對象的tag為B2”“
{
G1++;
tis.transform.gameObject.SetActive(true);
tis.text = "真實鑰匙";
Invoke("ZanT", 1);//通過1S延遲關(guān)閉UI的TXT顯示
aui.clip = ZHH;
aui.Play();
}
}
void ZanT()
{
tis.transform.gameObject.SetActive(false );
}
(游戲運(yùn)行的截圖)
熱門資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設(shè)計領(lǐng)域和數(shù)字藝術(shù)教育的重要性,歡迎點(diǎn)擊咨詢報名。
2. 手機(jī)游戲如何開發(fā)(如何制作傳奇手游,都需要準(zhǔn)備些什么?)
?如何制作傳奇手游,都需要準(zhǔn)備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說明時代在進(jìn)步游戲在更新,更趨于方便化移動化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費(fèi)、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費(fèi)、一鍵制作炫酷特效,適合新手小白。快來試試!
4. Steam值得入手的武俠游戲盤點(diǎn),各具特色的快意江湖
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個抉定都將觸發(fā)更多愛恨糾葛的精彩奇遇?!短烀嬗肪哂卸嗑€劇情多結(jié)局,不限主線發(fā)展,高自由...
5. Bigtime加密游戲經(jīng)濟(jì)體系揭秘,不同玩家角色的經(jīng)濟(jì)活動
Bigtime加密游戲經(jīng)濟(jì)模型分析,探討游戲經(jīng)濟(jì)特點(diǎn),幫助玩家更全面了解這款GameFi產(chǎn)品。
6. 3D動畫軟件你知道幾個?3ds Max、Blender、Maya、Houdini大比拼
當(dāng)提到3D動畫軟件或動畫工具時,指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術(shù)動畫的軟件程序。但是,在3D動畫軟件中還包含了其他類型的...
7. 3D動漫建模全過程,不是一般人能學(xué)的會的,會的多不是人?
步驟01:面部,頸部,身體在一起這次我不準(zhǔn)備設(shè)計圖片,我從雕刻進(jìn)入。這一次,它將是一種純粹關(guān)注建模而非整體繪畫的形式。像往常一樣,我從Sphere創(chuàng)建它...
8. 如何自己開發(fā)一款游戲(游戲開發(fā)入門必看:五大獨(dú)立游戲開發(fā)技巧)
?游戲開發(fā)入門必看:五大獨(dú)立游戲開發(fā)技巧無論您是剛剛起步開發(fā)自己的第一款游戲,還是已經(jīng)制作了幾款游戲,本篇文章中的5大獨(dú)立游戲開發(fā)技巧都可以幫助您更好地設(shè)計下一款游戲。無論你對游戲有著什么樣的概念,都
?三昧動漫對于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應(yīng)并不會推出《巫師4》。因為《巫師》系列在策劃的時候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
10. 3D打印技巧揭秘!Cura設(shè)置讓你的模型更堅固
想讓你的3D打印模型更堅固?不妨嘗試一下Cura參數(shù)設(shè)置和設(shè)計技巧,讓你輕松掌握!
最新文章
同學(xué)您好!