找回密碼
 注冊帳號

掃一掃,訪問微社區

Unity unity 實現 指針跟隨鼠標旋轉和GTA武器菜單選擇等效果

18
回復
2881
查看
打印 上一主題 下一主題
[ 復制鏈接 ]
5熟悉之中
838/1000
排名
8081
昨日變化

3

主題

83

帖子

838

積分

Rank: 5Rank: 5

UID
216680
好友
2
蠻牛幣
122
威望
0
注冊時間
2017-4-7
在線時間
599 小時
最后登錄
2020-6-17

馬上注冊,結交更多好友,享用更多功能,讓你輕松玩轉社區。

您需要 登錄 才可以下載或查看,沒有帳號?注冊帳號

x
本帖最后由 狠沖洞 于 2020-4-30 14:04 編輯


GTA武器菜單選擇

簡單實現這種效果

簡單實現這簡單實現這種效果簡單實現這種效果簡單實現這種效果簡單實現這種效果簡單實現這種效果簡單實現這種效果種效果


Demo的效果






以下是主要代碼


[C#] 純文本查看 復制代碼
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Menu : MonoBehaviour {

    public Image[] items;

    public Color nomorlColor;
    public Color heightColor;

    int oldItemIndex = 0;

    // Use this for initialization
    void Start () {
        
    }
   
    // Update is called once per frame
    void Update () {
        int currentItemindex = GetItemIndex();
        //設置高亮,并將其他item置回默認樣式
        if (oldItemIndex != currentItemindex)
        {
            items[currentItemindex].color = heightColor;
            items[oldItemIndex].color = nomorlColor;
            oldItemIndex = currentItemindex;
        }

        if (Input.GetMouseButtonDown(0))
        {
           //點擊左鍵確認選擇,這里未做處理
        }
    }

    //根據角度獲得當前鼠標所處的image數組的index
    int GetItemIndex()
    {
        //V是鼠標相對屏幕大小以中心點原點的2維向量
        Vector2 v = new Vector2(Input.mousePosition.x / Screen.width - 0.5f, Input.mousePosition.y / Screen.height - 0.5f);
        //f是(相對屏幕大小以中心點原點的坐標系)(0,1)與v的角度
        float f = Mathf.Atan2(v.x, v.y) * Mathf.Rad2Deg + 180;
        //根據f返回index
        return ((int)(f / (360/items.Length)));
    }

}



---

指針跟隨鼠標旋轉

效果1





效果2





這里可以看到,旋轉的中心不再局限于屏幕中心的位置了,而是可以以任意位置為中心進行旋轉.



需要注意的是




Canvas需要設置為overlay模式,其他模式下實現方式需要大家自己研究,這里只能使用overlay模式




以下是主要代碼

[C#] 純文本查看 復制代碼
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class RotateNeedle : MonoBehaviour {

    public Transform center;
    public Transform needle;

    public Color heightColor;
    private Color nomorlColor = Color.white;

    private Image needleImg;
    private bool isRotate = false;

    void Start () {
        needleImg = needle.GetComponent<Image>();
        nomorlColor = needleImg.color;
    }
   
    void Update () {
        if (Input.GetMouseButtonDown(0))
        {
            isRotate = true;
        }
        if (Input.GetMouseButtonUp(0))
        {
            isRotate = false;
            needleImg.color = nomorlColor;
        }
        if (isRotate)
        {
            SetNeedleAngle(needle, center);
            needleImg.color = heightColor;
        }
    }

    void SetNeedleAngle(Transform _needle, Transform _center)
    {
        if (_needle == null || _center == null)
        {
            return;
        }
        var centerX = _center.transform.position.x;
        var centerY = _center.transform.position.y;

        var centerScreenPos = Camera.main.WorldToScreenPoint(center.transform.position);
        var mouseScreenPos = Camera.main.WorldToScreenPoint(Input.mousePosition);
        var angle = new Vector3(mouseScreenPos.x - centerScreenPos.x, mouseScreenPos.y - centerScreenPos.y, 0);
        var f = Mathf.Atan2(angle.x, angle.y) * Mathf.Rad2Deg;
        _needle.eulerAngles = Vector3.back* f;
    }
}



下載地址




回復

使用道具 舉報

7日久生情
1678/5000
排名
8746
昨日變化

0

主題

253

帖子

1678

積分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
236487
好友
5
蠻牛幣
6736
威望
0
注冊時間
2017-8-8
在線時間
1289 小時
最后登錄
2020-7-15
沙發
2020-5-12 15:18:47 只看該作者
狠沖洞
5熟悉之中
771/1000
排名8082昨日變化
3
主題       
82
帖子       
771
積分
Rank: 5Rank: 5
UID216680好友2蠻牛幣124威望0注冊時間2017-4-7在線時間534 小時最后登錄2020-5-11
回復 支持 反對

使用道具 舉報

4四處流浪
449/500
排名
5608
昨日變化

1

主題

37

帖子

449

積分

Rank: 4

UID
264005
好友
0
蠻牛幣
873
威望
0
注冊時間
2018-1-11
在線時間
159 小時
最后登錄
2020-7-16
板凳
2020-5-15 13:37:38 只看該作者
借鑒一下
回復

使用道具 舉報

8常駐蠻牛
7837/10000
排名
249
昨日變化

0

主題

4021

帖子

7837

積分

Rank: 8Rank: 8

UID
3215
好友
0
蠻牛幣
21
威望
0
注冊時間
2013-9-4
在線時間
1818 小時
最后登錄
2020-5-23
地板
2020-5-16 08:40:27 只看該作者
6666666666666666666
回復 支持 反對

使用道具 舉報

0

主題

14

帖子

21

積分

Rank: 1

UID
347133
好友
0
蠻牛幣
3
威望
0
注冊時間
2020-5-16
在線時間
7 小時
最后登錄
2020-7-8
5#
2020-5-17 14:33:42 只看該作者
6666666666666666666
回復 支持 反對

使用道具 舉報

0

主題

6

帖子

11

積分

Rank: 1

UID
328760
好友
0
蠻牛幣
1
威望
0
注冊時間
2019-8-6
在線時間
5 小時
最后登錄
2020-5-20
6#
2020-5-20 12:18:43 只看該作者
感謝分享 已收藏
回復

使用道具 舉報

4四處流浪
323/500

0

主題

15

帖子

323

積分

Rank: 4

UID
325168
好友
0
蠻牛幣
74
威望
0
注冊時間
2019-6-19
在線時間
308 小時
最后登錄
2020-7-17
7#
2020-5-22 10:41:31 只看該作者
6666666值得學習
回復 支持 反對

使用道具 舉報

3偶爾光臨
285/300

0

主題

114

帖子

285

積分

Rank: 3Rank: 3Rank: 3

UID
342428
好友
0
蠻牛幣
90
威望
0
注冊時間
2020-3-16
在線時間
171 小時
最后登錄
2020-6-19
8#
2020-5-24 10:55:31 只看該作者

6666666666666666666
回復 支持 反對

使用道具 舉報

4四處流浪
486/500
排名
16594
昨日變化

0

主題

85

帖子

486

積分

Rank: 4

UID
159377
好友
1
蠻牛幣
211
威望
0
注冊時間
2016-7-28
在線時間
359 小時
最后登錄
2020-7-17
9#
2020-5-25 10:25:41 只看該作者
馬克一下代碼
回復

使用道具 舉報

4四處流浪
393/500
排名
10112
昨日變化

5

主題

76

帖子

393

積分

Rank: 4

UID
61899
好友
7
蠻牛幣
0
威望
0
注冊時間
2014-12-17
在線時間
203 小時
最后登錄
2020-5-26
10#
2020-5-26 10:55:06 只看該作者
thanks for share
回復

使用道具 舉報

4四處流浪
380/500
排名
24130
昨日變化

0

主題

171

帖子

380

積分

Rank: 4

UID
8
好友
0
蠻牛幣
4
威望
0
注冊時間
2013-5-27
在線時間
192 小時
最后登錄
2020-7-2
11#
2020-5-27 10:20:46 只看該作者
看起來效果很不錯
回復 支持 反對

使用道具 舉報

0

主題

14

帖子

20

積分

Rank: 1

UID
312439
好友
0
蠻牛幣
10
威望
0
注冊時間
2019-1-22
在線時間
6 小時
最后登錄
2020-6-3
12#
2020-5-27 17:50:51 只看該作者
可以 很強大6666
回復

使用道具 舉報

5熟悉之中
764/1000
排名
5514
昨日變化

2

主題

179

帖子

764

積分

Rank: 5Rank: 5

UID
258871
好友
0
蠻牛幣
1169
威望
0
注冊時間
2017-12-10
在線時間
325 小時
最后登錄
2020-7-2
13#
2020-6-1 14:48:30 只看該作者
可不可以做個圓環顏色漸變
回復 支持 反對

使用道具 舉報

5熟悉之中
671/1000
排名
8915
昨日變化

1

主題

125

帖子

671

積分

Rank: 5Rank: 5

UID
247146
好友
0
蠻牛幣
575
威望
0
注冊時間
2017-10-4
在線時間
413 小時
最后登錄
2020-7-18
14#
2020-6-10 10:10:39 只看該作者
白嫖黨福音,扎鐵了老心
回復 支持 反對

使用道具 舉報

排名
64946
昨日變化

0

主題

53

帖子

92

積分

Rank: 2Rank: 2

UID
277854
好友
0
蠻牛幣
164
威望
0
注冊時間
2018-4-18
在線時間
37 小時
最后登錄
2020-7-13
15#
2020-6-12 21:30:33 只看該作者
感謝分享!!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊帳號

本版積分規則

神马电影34pp影视午夜