您好,登錄后才能下訂單哦!
大家都知道在Unity 場景面板(Scene面板)可以實現(xiàn)拖拽物體。具體操作步驟是變換工具欄選擇“手”的拖拽工具(或者快捷鍵“Q”)之后,直接用鼠標(biāo)左鍵按住竟可以實現(xiàn)拖拽物體。當(dāng)然這樣的效果實際上并不是實現(xiàn)了拖拽物體,因為物體的位置是沒有變化的。它實際上就是移動我們的當(dāng)前場景,看起來在拖拽物體似的。如圖:
那我們現(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)系之后進(jìn)而求出兩者之間的距離(具體細(xì)節(jié)圖片注釋均已指出)。
while循環(huán)當(dāng)鼠標(biāo)按下時即進(jìn)入,因為一直按住,bool值永遠(yuǎn)為true,但由于協(xié)同,每一幀都要跳出該函數(shù),所以不會出現(xiàn)死循環(huán)。最后是等待FixedUpdate()函數(shù)。這個直接寫yield return null也是可以實現(xiàn)的。目的只是跳出該協(xié)同,然后下一幀再進(jìn)入。
這就是簡單的實現(xiàn)鼠標(biāo)拖拽物體了。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。