激情六月丁香婷婷|亚洲色图AV二区|丝袜AV日韩AV|久草视频在线分类|伊人九九精品视频|国产精品一级电影|久草视频在线99|在线看的av网址|伊人99精品无码|午夜无码视频在线

高校合作1:010-59833514 ?咨詢電話:400-810-1418 服務(wù)與監(jiān)督電話:400-810-1418轉(zhuǎn)接2

想自己制作游戲?零基礎(chǔ)怎么辦?Unity3D幫你實現(xiàn)

發(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ā)布游戲至WindowsMac、Wii、iPhone、WebGL(需要HTML5)、Windows phone 8和Android平臺。也可以利用Unity web player插件發(fā)布網(wǎng)頁游戲,支持Mac和Windows的網(wǎng)頁瀏覽。它的網(wǎng)頁播放器也被Mac 所支持。


(如國名手游王者榮耀就是采用unity開發(fā))


2

設(shè)計思路

基于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)行的截圖)

ps:自己動手才能體驗到其中的樂趣,以上只是簡單的介紹,私信回復(fù)007即可獲得游戲全部教程~





熱門課程推薦

熱門資訊

請綁定手機(jī)號

x

同學(xué)您好!

您已成功報名0元試學(xué)活動,老師會在第一時間與您取得聯(lián)系,請保持電話暢通!
確定