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

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


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

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

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

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

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

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

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

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

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

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

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

一次錯誤嘗試

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

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

獲取private的對象方法

然后在Controller.cs中獲取

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

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

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