2016年9月11日 星期日

Unity 點選及拖曳2D物件(click and drag 2D game object)

為了要實作在2D環境下點擊及拖曳物件的功能,
但是網路上分享的片段沒有完全符合我的需求,
所以寫了一份自己的版本。
主要分為2個部份
1如何判斷點擊到物件
2在按住的時間內,讓物件跟著滑鼠移動

1
在判斷點擊的方法和3D空間的作法類似,
先求出滑鼠在空間上點擊的位置,
再由此位置取得世界坐標系上,
因為2d 座標要轉3d座標會缺少一個維度資訊,
所以要需要另外再給定一個z值。

再用ray cast判定是否有撞到物體,
當滑鼠點擊時,開始判斷ray是否有打到物件,
為了加速ray cast的效率,
我們可以為物件分層(layer),這邊是放在Unity的Layer 8。



2
最後在Drag的函式內完成每次更新都會再檢查物體位置,
如果滑鼠不再按著時,即離開函式。


Demo:

source code

PS:
1.在chrome,Vivaldi無法直接由檔案檢視結果
2.放到google drive 分享的方法。https://www.youtube.com/watch?v=c431DEshk4U
3.webGL分享同上。只是build時改成選webGL.

沒有留言:

張貼留言