unity 拖拽物體(避免穿牆)

2021-10-13 09:26:51 字數 739 閱讀 4135

拖拽物體:

網上可查詢的比較多的方法原理:

通過將滑鼠在螢幕上的座標轉化成3d座標,將位置偏移賦值給需要拖拽的物體,隨意在網上搜尋拖拽物體都可以找到,這裡就不掛**了,但是這樣的拖拽方式也有乙個問題,由於我們的拖拽物件是強制位移,所以在拖拽時會穿透其他的物體,比如我們要在乙個房間內拖動乙個cube,那麼這個cube會穿透牆壁和底面,由於個人比較菜雞的緣故,我使用了另一種方法。

raycasthit hit;

gameobject darggameobject;

public

layermask draglayer;

public

layermask planelayer;

private

void

update()

}if(physics.

raycast

(camera.main.

screenpointtoray

(input.mouseposition)

,out hit,

1000

, planelayer))}

if(input.

getmousebuttonup(0

))}

先說一下好處,這種方法避免了拖拽物件穿牆的問題;

缺點:除了需要拖拽的物體外我們必須要有乙個物件作為移動層,也就是說如果這個物體是水平狀態,那麼可以前後左右移動,如果是豎直狀態,可以上下左右移動;

Unity中滑鼠左鍵按下,拖拽物體移動

把這段指令碼拖給想要拖拽的物體,然後加上碰撞盒就可以了。private vector3 vec3targetscreenspace 目標物體的螢幕空間座標 private vector3 vec3targetworldspace 目標物體的世界空間座標 private transform trans...

Unity 拖拽物體時限制其沿直線運動

在許多場景中,我們需要用到拖拽物體這個功能,有的時候我們需要拖拽的軌跡為一條直線,平穩地拖拽,但是單靠用手去拖拽是很難拖成直線的 除非你單身20年 這時我們可以將拖拽的點限定在一條直線或者向量上.要實現這個功能只需你想要規定的那條直線或向量上的兩個點,和你所拖拽的物體的座標。思路是求出你所拖拽物體座...

unity中基本座標轉換和物體的拖拽

1.螢幕轉世界座標 vector3 camera.main.screentoworldpoint 2.世界轉螢幕座標 vector3 camera.main.worldtoscreenpoint 3.世界轉視口座標 vector3 camera.main.worldtoviewportpoint 4...