Unity UGUI獲取滑鼠在螢幕的準確點選位置

2022-03-31 00:13:34 字數 1217 閱讀 9325

想要獲取滑鼠在螢幕的準確點選位置,千萬不要胡亂寫,什麼轉化座標系,什麼ray射線檢測都是浮雲。

1,轉化座標系只是相對而言,並不能準確實現當前滑鼠點選在螢幕的位置;

2,ray檢測,hit是需要碰撞的,沒碰撞,獲取的是什麼??(0,0,0)。

所以,請看如下正解。

第一種:

我用座標系轉化時發現值並沒有什麼變化,網上亂七八糟的都有。

其實很簡單,input.mouseposition本身就是螢幕座標(二維),

不能直接使用是因為,螢幕空間以畫素定義。螢幕的左下為(0,0);右上是(pixelwidth,pixelheight),

或者說以螢幕的左下角為(0,0)點,右上角為(screen.width,screen.height)

而螢幕的基準點在螢幕中心(screen.width/2,screen.height/2),需要減掉二分之一座標值,也就是減去二分之一螢幕的寬、高。

將基準點放置螢幕的左下角,即基準點為(0,0).

此時m_panel的螢幕座標就對應到tranpos的x、y值。

transform(recttransform)  m_panel;

float x = input.mouseposition.x - screen.width / 2f;

float y = input.mouseposition.y - screen.height / 2f;

vector2 tranpos = new vector2(x,y);

m_panel.localposition = tranpos;

注意:需要考慮m_panel的錨點,舉例說明:可以這麼說,錨點對應座標中心點。

第二種:使用 recttransformutility.screenpointtolocalpointinrectangle 方法。

我這裡的uicamera是單獨檢測ui層的相機,可以是maincamera,如果沒有攝像機(即canvas   --overlay),則相機為null。

public vector2 currmouseposition(transform thistrans)

另,獲取滑鼠的世界座標: 滑鼠在世界座標下的位置,滑鼠位置從螢幕座標轉化為世界座標

使用C 在console中獲取滑鼠事件

第一點,使用標頭檔案 要在console裡進行操作,首先先說一下readconsoleinput 函式。msdn的具體解釋如下 來自這個函式主要是用於獲取控制台資訊。其實lpbuffer所返回的資訊中,包括了多個事件,其中有focusevent,keyevent,windowbuffersizeev...

獲取滑鼠位置

clientx 設定或獲取滑鼠指標位置相對於視窗客戶區域的 x 座標,其中客戶區域不包括視窗自身的控制項和滾動條。clienty 設定或獲取滑鼠指標位置相對於視窗客戶區域的 y 座標,其中客戶區域不包括視窗自身的控制項和滾動條。offsetx 設定或獲取滑鼠指標位置相對於觸發事件的物件的 x 座標。...

獲取滑鼠資訊

1.獲取滑鼠雙擊時間間隔 連續兩次滑鼠單擊之間會被處理成雙擊事件的時間間隔 重寫api函式 dllimport user32.dll entrypoint getdoubleclicktime public extern static int getdoubleclicktime 2.獲取游標閃爍的...