基于Unity Standard Assets的Characters資源包實(shí)現(xiàn)自定義第一人稱控制

導(dǎo)入package,使用FPS預(yù)置件,在FPSController上添加Contronller.cs腳本


1. 鼠標(biāo)hover到按鈕上會(huì)變成小手

a).導(dǎo)入一張cursor的圖片,將該圖片的texture type改為Cursor

如果將texture type改為Sprite(2D and UI),也可以實(shí)現(xiàn),但是console會(huì)報(bào)錯(cuò)

b).想要實(shí)現(xiàn)將鼠標(biāo)位置移動(dòng)到相應(yīng)的3d模型上就改變其樣子,可以通過射線檢測(cè),當(dāng)相觸物體的tag是operator的話,鼠標(biāo)會(huì)變成小手的樣子。

Controller.cs中更換鼠標(biāo)外觀API

c). 因?yàn)樯厦孢@個(gè)函數(shù)是放在update函數(shù)中的,所以不知道一直在做射線檢測(cè)會(huì)不會(huì)很影響性能

運(yùn)行結(jié)果

2. 鼠標(biāo)控制旋轉(zhuǎn)方向時(shí),可以讓鼠標(biāo)一直保持在屏幕的中間

在unity中,提供了鎖定光標(biāo)在中心的方法,但是這個(gè)光標(biāo)會(huì)hidden起來。

unity提供的鎖定光標(biāo)方法

使用FPS預(yù)置件的時(shí)候,在MouseLook.cs腳本中封裝了這個(gè)方法,可以通過調(diào)用MouseLook.SetCursorLock(bool value)來改變此時(shí)是否鎖定光標(biāo)。如果value為true,通過escape按鍵可以臨時(shí)解除鎖定光標(biāo),但是不能進(jìn)行鼠標(biāo)的click操作,因?yàn)榘聪率髽?biāo)又會(huì)變成鎖定光標(biāo)模式。如果value為false,能夠?qū)崿F(xiàn)永久的解除光標(biāo)鎖定。

一次錯(cuò)誤嘗試

在加載在FPSController上面的Controller.cs文件中,我使用了上面的一段代碼準(zhǔn)備切換mouselock的狀態(tài),在debug過程中,代碼都run進(jìn)去了,但是卻沒有效果。

那是因?yàn)閙ouselook是我new的一個(gè)新對(duì)象,這個(gè)對(duì)象和掛載在FPSController上面的mouselook并不是同一個(gè)對(duì)象。所以必須獲取到這個(gè)mouselook對(duì)象,但發(fā)現(xiàn)在FirstPersonController.cs中,MouseLook對(duì)象是private的,為此,可以將其改成public(不推薦),或者如下,增加在FirstPersonController.cs中

獲取private的對(duì)象方法

然后在Controller.cs中獲取

Controller.cs中獲取mouselook對(duì)象
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容