JS實現物體隨滑鼠旋轉

2022-08-10 05:57:07 字數 1027 閱讀 5403

首先,需要乙個可旋轉的物件,該物件包含使用canvas上下文在canvas上繪製乙個箭頭的功能。由於該箭頭會重複使用,我們將其封裝為乙個類,將以下**新增到arrow.js檔案中,把該檔案匯入 html 主檔案中:

function arrow () 

arrow.prototype.draw = function (context)

draw(context) 方法根據傳入的 canvas 上下文引數使用 canvas 繪圖 api 繪製乙個箭頭。

我們已經定義好了乙個箭頭類,每當使用乙個箭頭物件時,只需呼叫 new arrow()方法即可。接下來,我們要找到滑鼠在畫布中所在的座標

var utils = {}

utils.capturemouse = function (element)

element.addeventlistener('mousemove', function (event) else

x -= element.offsetleft //防止偏移

y -= element.offsettop

mouse.x = x // 滑鼠的x座標

mouse.y = y // 滑鼠的y座標

}, false )

return mouse // 獲得滑鼠位置座標

}

3.當我們獲得了箭頭中心位置和滑鼠位置以後,就可以利用 math.atan2(dy, dx) 方法獲得偏移的角度

dx = mouse.x-arrow.x;

dy = mouse.y-arrow.y;

arrow.rotation = math.atan2(dy, dx);

通過下圖可以更好的理解

當然,需要乙個迴圈才能實現動畫,以下是 html 中的**

標註隨測量物體旋轉問題

假設我們對如下block中的紅色線段做了標註,那麼這個標註的兩個錨點 anchor point 分別為紅色線段的2個端點 當我們旋轉這個block後,我們自然希望這個標註也跟著物體旋轉的,調整到如下合理的位置,現在的問題是如何為這個標註求得變換矩陣。一開始我以為只要根據紅色初始位置,跟終止位置,求得...

unity實現旋轉物體

也是剛開始做專案,新人難免遇到這樣那樣的問題 比如最新需要實現滑鼠旋轉場景中物體的功能,指令碼如下 private void onmousedrag drag滑鼠左鍵按下 float mou input.getaxis mouse x speed float mousey input.getaxis...

Unity 2D中UI隨滑鼠旋轉朝向滑鼠

詳細教程 1 canvas的render mode的三種模式介紹 1.screen space overlay可以理解為unity為你自動設定好了uicamera,而且這個相機的depth值是大於100的 相機能設定的最大depth值為100 2.screen space camera 將ui渲染在...