激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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
主站蜘蛛池模板: 欧美成人精品一区二区三区 | 毛片a片免费看 | 毛片免费视频 | 国产午夜精品久久久久久免费视 | 澳门一级淫片免费视频 | 欧美国产免费 | 成人在线观看免费高清 | 久久精品一区二区三区不卡牛牛 | 男男成人高潮片免费视频欧美 | 91精品国产刺激国语对白 | 亚洲成人福利在线观看 | 激情视频日韩 | 精品三级内地国产在线观看 | 国产九色91 | 欧美日韩高清一区二区三区 | 九九热视频这里只有精品 | 一本一本久久a久久精品综合小说 | 黄色一级视频 | 钻石午夜影院 | 色综合久久久久久久久久久 | 成人羞羞在线观看网站 | 国产精品视频免费在线观看 | 成人资源在线 | 成人国产精品一区二区毛片在线 | 亚洲精品一区二区三区免 | 黄色片视频免费观看 | 日本精品一区二区 | 欧美一区二区三区中文字幕 | 97久久曰曰久久久 | 色视频欧美 | 色域tv | 97久色| 亚洲导航深夜福利涩涩屋 | 欧美精品18 | 日韩一级网站 | 精品国产乱码一区二区三区四区 | 午夜伦情电午夜伦情电影 | 久国久产久精永久网页 | 国产亚洲精彩视频 | 91av亚洲| 色婷婷久久久久久 |