一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - Unity3D實現鼠標控制旋轉轉盤

Unity3D實現鼠標控制旋轉轉盤

2022-03-09 14:16JayW就是我吖 C#

這篇文章主要為大家詳細介紹了Unity3D實現鼠標控制旋轉轉盤,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

在培訓模擬考試軟件中,我們經常會遇到類似用鼠標旋轉轉盤打開開關的需求。讓用戶更加真實的操作設備儀器。接下來說下我的解決方案。

因為鼠標操作是在UI平面上,所以我們要先將被操作的模型的世界坐標轉換到屏幕坐標上。代碼如下:

?
1
ModelScreenPos = camera.WorldToScreenPoint(Model.transform.position);

這里有個聲明,這個模型代表的是轉盤,而且要保證模型的中心點在轉盤中心。然后我們就要計算鼠標以模型在屏幕坐標為中心點的旋轉偏移量。我們開始以鼠標按下的瞬間,偏移量為0,然后進行每幀計算偏移量。偏移量也就是旋轉角度,很好計算,就是求兩個向量的夾角。角度angle=Vector2.Angle(OA,OB);

Unity3D實現鼠標控制旋轉轉盤

接下來我們要解決的就是旋轉方向是順時針還是逆時針的。利用unity的四元數公式

?
1
q = Quaternion.FromToRotation(OA, OB);

得出的四元數我們可以根據四元數的Z值判斷旋轉方向是順時針還是逆時針的。當Z為正時就是逆時針旋轉,當為負時就是順時針啦。可以自己寫個向量xy平面向量旋轉測試下。然后我們設置模型旋轉軸對應的歐拉角分量加上我們獲得的旋轉角度。功能就實現了。思路大體是這樣,但是在實現過程中有很多小的設置需要注意下。下面是我的源代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
private Vector2 ModelPos;
 private Vector2 mousePos; //當前鼠標位置
 private Vector2 premousePos;//上一幀鼠標位置
 private Quaternion q;
 private float RotateAngle;
 private Vector3 localEluer; //模型歐拉角存儲變量
 
 private bool IsSelect = false;
 void Start()
 {
  ModelPos = camera.WorldToScreenPoint(go.transform.position);
  angle = localEluer.x = info.opening;
  go.transform.localEulerAngles = localEluer;
 }
 
 public virtual void Update()
 {
  if (Input.GetMouseButtonDown(0)&&modelCamera.IsTouch())
  {
   IsSelect = true;
   premousePos = mousePos=Input.mousePosition; //每次重新點擊的時候都重置鼠標上一幀點擊坐標
  }
  if (Input.GetMouseButton(0)&& IsSelect)
  {
   mousePos = Input.mousePosition;
   RotateAngle = Vector2.Angle(premousePos - ModelPos, mousePos - ModelPos);
   //Debug.Log("RotateAngle+"+RotateAngle);
   if (RotateAngle == 0)
   {
    premousePos = mousePos;
   }
   else
   {
    q = Quaternion.FromToRotation(premousePos - ModelPos, mousePos - ModelPos);
    float k = q.z > 0 ? 1 : -1;
    localEluer.x += k * RotateAngle;
    //Debug.Log(localEluer.x);
    angle = localEluer.x = Mathf.Clamp(localEluer.x, 0, AllowAngle); //這里是項目需要 限制一下旋轉圈數
    go.transform.localEulerAngles = localEluer;
    premousePos = mousePos;
   }
  }
  if (Input.GetMouseButtonUp(0))
  {
   IsSelect = false;
  }
 }

效果圖如下:

Unity3D實現鼠標控制旋轉轉盤

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/qq_33994566/article/details/79650913

延伸 · 閱讀

精彩推薦
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
主站蜘蛛池模板: 亚洲国产在线播放 | 国产精品微拍 | 精品精品久久宅男的天堂 | 办公室强行丝袜秘书啪啪 | 我的好妈妈7中字在线观看韩国 | 91小视频在线观看免费版高清 | 成人网18免费网 | 久久久久影视 | 久久热在线视频精品店 | 美女沟厕撒尿全过程高清图片 | 亚洲高清色图 | 波多野结衣一区 | 国产精品久久久久久影院 | 99热这里只精品99re66 | chinese老太granny| 天天综合网天天做天天受 | 国产一级毛片外aaaa | 污漫日本E同人 | 国产在线乱子伦一区二区 | 亚洲成人99 | 色多多绿巨人视频 | 18young第一次| 四虎1515h永久 | 99久久精品免费精品国产 | 免费草比视频 | 第一国内永久免费福利视频 | 农夫69小说小雨与农村老太 | 精品国产中文字幕在线视频 | 国产大片线上免费观看 | 亚洲国产在线99视频 | 亚洲 欧美 国产 综合 播放 | 单亲乱l仑在线观看免费观看 | 含羞草传媒一天免费看下 | 成人18在线观看 | sss亚洲国产欧美一区二区 | 免费精品视频在线 | 99热这里只有精品在线 | 国产综合久久久久久 | 国产色司机在线视频免费观看 | 美女口述又粗又大感觉 | 亚洲精品一区二区三区在线观看 |