freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

論文-基于unity的射擊類游戲開發(fā)(編輯修改稿)

2025-01-06 22:23 本頁面
 

【文章內(nèi)容簡介】 ditRender Steting 菜單,打開渲染設(shè)置的界面,在 Skybox Material 選項中設(shè)置天空盒的材質(zhì),即將天空盒包中的天空盒材質(zhì)拖入其中便可。這樣美輪美奐的場景就基本設(shè)置完成了。 在創(chuàng)建工程時我們還導(dǎo)入了水體的包裹,這樣 我們也可以在場景中還可以加入一些水體效果。 圖 46 完成后的地形 U3D 中自帶的地形編輯器功能十分強大,可以打造任何你想要的場景,沙漠、雪山任何你想到的場景風格,他基本都能模擬出來。上圖就是我個人制作的地形。 游戲?qū)ο蟮闹谱? 主角對象 1)主角模型 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 更多整套相關(guān)文件參見 15 首先我們要將玩家所要控制的對象設(shè)計出來,即主角對象,這里使用的是一款坦克模型。在網(wǎng)上找到相應(yīng)的坦克模型的 .max 文件,而 Unity3D(一下簡稱 U3D)所支持的是 .FBX 模 型,這里我將 .max 模型文件導(dǎo)入到 3DSmax 中,再將其的格式導(dǎo)出為 .FBX 格式,這樣就可以將該模型拖入到 U3D 中了。 圖 47 主角的設(shè)計 2)移動方式 在場景中調(diào)整好坦克的大小之后,就必須要給坦克主角添加行動腳本了。現(xiàn)實中的坦克只能往前移動,并不能左右平移,但可以原地旋轉(zhuǎn)身體。 U3D 中使用方法 ()來移動身體,此方法的唯一參數(shù)為平移模型的方向。使用方法 ()來旋轉(zhuǎn)身體,此方法的參數(shù)為旋轉(zhuǎn) 的速度和旋轉(zhuǎn)方向。 具體代碼為: using UnityEngine。 using 。 public class shentiyidong : MonoBehaviour { private int speed = 10。 private GameObject obj。 // private int speedrotate = 20。 // Use this for initialization void Start () { } // Update is called once per frame 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 更多整套相關(guān)文件參見 16 void Update() { //if ( == 0) { if (()) { ( * * speed)。 } if (()) { ( * * speed)。 } if (()) { (new Vector3(0, 2, 0))。 } if (()) { (new Vector3(0, 2, 0))。 } } } 將這一段腳本代碼拖入到整個坦克中,就可以在場景中實現(xiàn)坦克的前后移動和身體的旋轉(zhuǎn),其中 Vector3 這是一個方向容器,其中參數(shù)表示 (X 軸, Y軸, Z 軸 )。 3)炮頭旋轉(zhuǎn) 之后我們來設(shè)計坦克的炮頭 旋轉(zhuǎn)方式,方法任然為 Rotate()方法 具體代碼為: using UnityEngine。 using 。 public class Nxuanzhuanpaotou : MonoBehaviour { private int speed=100。 // Use this for initialization void Start () { 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 更多整套相關(guān)文件參見 17 } // Update is called once per frame void Update () { (new Vector3(0, 0, (Mouse X)) * * speed)。 } } 將該段代碼拖給坦克中的炮頭,就可以旋轉(zhuǎn)炮頭了。 4)炮彈的設(shè)計與開火實現(xiàn) 在工具欄中選擇 Create ObjectCreate Othersphere 來創(chuàng)建一個球型物體,調(diào)整大小,并在網(wǎng)上找一些金屬高亮的材質(zhì)賦予給球體。在 project視圖中我們創(chuàng)建一個 prefab 預(yù)制對象, 將場景中的炮彈球體拖入該預(yù)制對象中改名為 bullet,然后刪除場景中的炮彈對象。這樣我們所要的炮彈就有了,之后便是發(fā)射炮彈的實現(xiàn)。 創(chuàng)建一個空的對象,在工具欄上選擇 Create ObjectCreate Empty,將該空對象拖到炮口附近,將其改名為 firepoint,并將它拖入到炮頭中,使其成為炮頭的子對象。如圖 48 所示: 圖 48 設(shè)計完成開炮的邏輯 我們給 firepoint 這個空對象給與一些腳本代碼來完成發(fā)射炮彈的效果。 代碼如下: if ((0)) 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 更多整套相關(guān)文件參見 18 { if (canshot == 1) { creationtime = 。 // (creationtime)。 Rigidbody clone。 clone = Instantiate(bullet, , ) as Rigidbody。 = ( * 250)。 Instantiate(paokouhuohua, , )。 canshot = 0。 } } if ( (creationtime + 2)) { canshot = 1。 } 在發(fā)射炮彈的腳本代碼中,我們使用了 Instantiate()方法,該方法用來實例化一個克隆對象,參數(shù)為(實例化的對象,產(chǎn)生的位置,產(chǎn)生的方向),()方法用來給創(chuàng)建的克隆實例給一個方向力,參數(shù)為力的方向。使用了 GetMouseButton( 0)方法來完成左鍵鼠標就可以實例化一個炮彈,并且按照方向發(fā)射出去。定義了一個 canshot 整形用來判定炮彈是否能發(fā)射。 在游戲中運行時,我們發(fā)現(xiàn)炮彈能夠發(fā)射并且會被撞到的物體彈開,下面就是要設(shè)計炮彈的爆炸與火花。 與炮彈的設(shè)計相同,在火花效果的包中找到一個 fireworks 效果,調(diào)整效果至爆炸的樣子,然后將它放入一個預(yù)制對象之中名字改為火花。 我們添加如下代碼使得炮彈碰撞到地方就消失并且產(chǎn)生一個火花,火 花的產(chǎn)生與消失。 具體代碼為: using UnityEngine。 using 。 public class paodan : MonoBehaviour { public Transform boom。 void OnCollisionStay(Collision collision) { 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 更多整套相關(guān)文件參見 19 Instantiate(boom, , )。 Destroy(gameObject)。 } // Use this for initialization void Start () { } // Update is called once per frame void Update () } } 將這段代碼拖給炮彈,目的是讓炮彈碰撞到物體就消失,并且在消失的地方實例化一個火花。這里使用了 OnCollisionStay( Collsion collision)方法,這是 U3D 中的一種碰撞檢測。 火花的消失代碼為: using UnityEngine。 using 。 public class huohuaxiaoshi : MonoBehaviour { private float creationtime。 // Use this for initialization void Start () { } void Awake() { creationtime = 。 } // Update is called once per frame void Update () { if ( (creationtime + )) { Destroy(gameObject)。 } } } Awake()方法是在物體創(chuàng)建的時候記錄時間用的,在創(chuàng)建火花到 秒時刪除該對象,這樣看起來就像是炮彈打中的地方產(chǎn)生火花的效果。 到此我們主角的設(shè)計基本都完成了,將主角坦克放入場景中,運行游戲的時候我們會發(fā)現(xiàn)主角無法停留在地形上,因為這里的坦克僅僅是一個模型,不存在碰撞效果,在工具欄中選擇 ponentPhysisbox Collider 給與坦克模型一個盒子碰撞模型,調(diào)整盒子碰撞模型的大小為坦克大小,這樣坦克就可以穩(wěn)穩(wěn)的站立在地形上了,如圖 49 所示。 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 更多整套相關(guān)文件參見 20 圖 49 坦克在場景中設(shè)計完成 敵人對象 與主角對象一樣,從網(wǎng)上找來一個坦克和火炮的模型,調(diào)整大小,為了降低游戲的難度,這里的敵人對象是無法移動的,但是他們會主動尋找主角并打擊主角,這里就是有關(guān)對人 AI 的設(shè)定了。 我們?nèi)稳幌窠o與主角發(fā)射炮彈的能力來給敵人的炮頭附上發(fā)射炮彈的功能,代碼和主角代碼如出一轍。設(shè)計敵人的關(guān)鍵之處就在于敵人的 AI 設(shè)定,以下的代碼就是敵人 AI 的代碼。 using UnityEngine。 using 。 public class dapaoAI : MonoBehaviour { private GameObject hero。//主角對象 private int diren_distance = 150。 // private GameObject paotou1。 private GameObject paotou。 public Rigidbody bullet。 public Transform firepointdapao。 private double creationtime。 private int canshot = 1。 public Transform paokouhuohua。 // Use this for initialization void Start() { hero = (mytank 修改 )。 南京工程學(xué)院畢業(yè)設(shè)計說明書(論文) 更多整套相關(guān)文件參見 21 paotou = (paotou)。 } // Update is called once per frame void Update() { if (hero == true) { if ((, ) diren_distance)//進入攻擊范圍 { (new Vector3(0, 1, 0))。 ()。 if (canshot == 1) { Rigidbody clone = Instantiate(bullet, , ) as Rigidbody。 Instantiate(paokouhuohua, , )。 creationtime = 。 = ( * 250)。 cansh
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1