Unity3D 游戲引擎之控制模型移動(dòng)旋轉(zhuǎn)與碰撞
雨松MOMO原創(chuàng)文章如轉(zhuǎn)載,請(qǐng)注明:轉(zhuǎn)載自
雨松MOMO的博客
原文地址:
http://blog.csdn.net/xys289187120/article/details/6901154
上一章介紹了模型的旋轉(zhuǎn)與平移,本章介紹一些好玩的,通過(guò)按鈕來(lái)控制模型的移動(dòng)與鏡頭的跟隨,腳本參數(shù)的傳遞。個(gè)人覺(jué)得Unity3D 這套游戲引擎真的很棒,它可以為開發(fā)者節(jié)省時(shí)間。用更多少的腳本,可以實(shí)現(xiàn)更多的功能。先贊一下,哇咔咔~廢話不多說(shuō)了,入正題!
首先在3D世界中創(chuàng)建一個(gè)箱子模型,然后添加一個(gè)腳本,命名為 js0綁定到這個(gè)箱子中。在添加一個(gè)腳本,命名為js1 ,同樣綁定到這個(gè)箱子上,用來(lái)實(shí)現(xiàn)對(duì)象的創(chuàng)建與調(diào)用方法參數(shù)的傳遞 ~
var Control; 這里聲明一個(gè)控制類的對(duì)象,用來(lái)進(jìn)行參數(shù)的傳遞,調(diào)用方法。
Getomponent(js1): 得到腳本名稱為js1的對(duì)象,這里把值賦給
Control,就可以使用js1腳本中的方法了,下面的代碼中通過(guò)這個(gè)對(duì)象調(diào)用模型的移動(dòng)方法。
Input.GetKey(KeyCode): 這個(gè)方法返回一個(gè)Bool 判斷當(dāng)前按鍵是否被按下,當(dāng)然這里只能運(yùn)行在PC上才可以感應(yīng)按鈕,因?yàn)镮OS的設(shè)備上沒(méi)有按鍵,以后我會(huì)介紹在IOS上添加游戲搖桿的功能,本章我們先學(xué)習(xí)一下PC上的基本按鈕響應(yīng)。
下面代碼
實(shí)現(xiàn)按下“W”控制物體向前
實(shí)現(xiàn)按下“S”控制物體向后
實(shí)現(xiàn)按下“A”控制物體向左平移
實(shí)現(xiàn)按下“D”控制物體向右平移
實(shí)現(xiàn)按下“Q”控制物體向左旋轉(zhuǎn)
實(shí)現(xiàn)按下“E”控制物體向右旋轉(zhuǎn)
js0.js 代碼
js1.js 代碼
參數(shù)的傳遞可以使用obj進(jìn)行傳遞,代碼中我將旋轉(zhuǎn)的角度做為參數(shù)傳遞到了js1.js中控制模型旋轉(zhuǎn)。
Vector3 標(biāo)示一個(gè)3D的向量單位,它可以標(biāo)示模型的三個(gè)方向,這里根據(jù)旋轉(zhuǎn)的角度與移動(dòng)的向量設(shè)置它。
OK點(diǎn)擊運(yùn)行,通過(guò)按鍵我們可以正常的控制模型平移與旋轉(zhuǎn),但是現(xiàn)在有兩個(gè)問(wèn)題 1, 主攝像機(jī)不能跟隨控制模型, 2 、模型可以橫穿過(guò)山丘,感覺(jué)很假。下面我們解決這兩個(gè)問(wèn)題。
在Unity3D標(biāo)準(zhǔn)資源的腳本中系統(tǒng)幫我們寫好了跟隨腳本.如下圖所示,點(diǎn)擊Import Package - > Scripts 將系統(tǒng)腳本導(dǎo)入。
選中攝像機(jī) 點(diǎn)擊Component - > Camera-Control - > Smoot Follow ,給主攝像機(jī)添加一個(gè)跟隨腳本。
跟隨腳本添加完以后,須要指定一個(gè)跟隨的物體,下面紅框內(nèi)將跟隨的物體Cube拖動(dòng)進(jìn)來(lái),這里Cube就是我們上面控制的模型,那么這樣,攝像機(jī)將會(huì)一直在身后跟隨我們控制的模型。下面是一些跟隨的參數(shù),設(shè)置 跟隨的距離 高度等等,盆友們手動(dòng)的修改一下運(yùn)行游戲就可以看出來(lái)變化,。
控制物體的碰撞可以使用 選中模型, Component - > Physics - > Rigidbody 設(shè)置這個(gè)模型的重力碰撞。那么這樣你控制的模型就不會(huì)穿過(guò)山丘,而是感應(yīng)重力碰撞。
點(diǎn)擊運(yùn)行游戲,看看效果,控制箱子行走的同時(shí),我們可以清晰的看出旁邊的樹木被物理碰撞所干擾,前后,左右,旋轉(zhuǎn) 完全OK .大家快試試吧。哇咔咔~~
明天開始MOMO又要開始處理一部分iPhone 的界面圖形化開發(fā),Tomorrow is another day ,加油哇咔咔~
Unity3D 的世界中腳本還可以做很多事情,以后我在慢慢向各位道來(lái)~ 歡迎各位盆友可以和
MOMO
一起討論
Unity3D
游戲開發(fā),哇咔咔~~~
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
