大家都知道在Unity 場景面板(Scene面板)可以實現(xiàn)拖拽物體。具體操作步驟是變換工具欄選擇“手”的拖拽工具(或者快捷鍵“Q”)之后,直接用鼠標(biāo)左鍵按住竟可以實現(xiàn)拖拽物體。當(dāng)然這樣的效果實際上并不是實現(xiàn)了拖拽物體,因為物體的位置是沒有變化的。它實際上就是移動我們的當(dāng)前場景,看起來在拖拽物體似的。如圖:
創(chuàng)新互聯(lián)主營臨清網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,臨清h5微信平臺小程序開發(fā)搭建,臨清網(wǎng)站營銷推廣歡迎臨清等地區(qū)企業(yè)咨詢那我們現(xiàn)在想要實現(xiàn)在Game面板實現(xiàn)鼠標(biāo)拖拽物體應(yīng)該如何實現(xiàn)?其實代碼很簡單。直接上圖:
如圖,我們將該腳本掛在想要拖拽的物體上(必須掛在要被拖拽的物體上才能實現(xiàn))。然后點擊運行后,將鼠標(biāo)指針放到該物上,按住左鍵即可實現(xiàn)。如圖:
主要方法是用了協(xié)同函數(shù)。OnMouseDown()是一個鼠標(biāo)觸發(fā)的回調(diào)函數(shù)。不用調(diào)取該方法即可實現(xiàn)。所以沒有寫開啟協(xié)同。
該方法在鼠標(biāo)指針在該物體上按下時即可觸發(fā)一次。然后我們需要求出鼠標(biāo)位置和被拖拽的物體之間的距離,這樣拖拽時只要保持兩者距離不變即可。又因為鼠標(biāo)在屏幕坐標(biāo)系,物體在世界坐標(biāo)系。所以需要兩者之間的轉(zhuǎn)換。都轉(zhuǎn)成世界坐標(biāo)系之后進而求出兩者之間的距離(具體細節(jié)圖片注釋均已指出)。
while循環(huán)當(dāng)鼠標(biāo)按下時即進入,因為一直按住,bool值永遠為true,但由于協(xié)同,每一幀都要跳出該函數(shù),所以不會出現(xiàn)死循環(huán)。最后是等待FixedUpdate()函數(shù)。這個直接寫yield return null也是可以實現(xiàn)的。目的只是跳出該協(xié)同,然后下一幀再進入。
這就是簡單的實現(xiàn)鼠標(biāo)拖拽物體了。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。