找回密码
 注册帐号

扫一扫,访问微社区

Unity unity 实现 指针跟随鼠标旋转和GTA武器菜单选择等效果

12
回复
1894
查看
[ 复制链接 ]
5熟悉之中
786/1000
排名
8081
昨日变化

3

主题

83

帖子

786

积分

Rank: 5Rank: 5

UID
216680
好友
2
蛮牛币
125
威望
0
注册时间
2017-4-7
在线时间
549 小时
最后登录
2020-6-1
2020-4-30 13:58:19 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 狠冲洞 于 2020-4-30 14:04 编辑


GTA武器菜单选择

简单实现这种效果

简单实现这简单实现这种效果简单实现这种效果简单实现这种效果简单实现这种效果简单实现这种效果简单实现这种效果种效果
aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwNzE4MTYxMjAwNzk0.png

Demo的效果




aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwNzE4MTYyNDAxOTMx.gif

以下是主要代码


[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

GIF_2020-4-30_11-31-40.gif



效果2


GIF_2020-4-30_11-30-50.gif


这里可以看到,旋转的中心不再局限于屏幕中心的位置了,而是可以以任意位置为中心进行旋转.



需要注意的是


20200430113602.png

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;
    }
}



下载地址




回复

使用道具 举报

6蛮牛粉丝
1301/1500
排名
8746
昨日变化

0

主题

235

帖子

1301

积分

Rank: 6Rank: 6Rank: 6

UID
236487
好友
5
蛮牛币
6441
威望
0
注册时间
2017-8-8
在线时间
930 小时
最后登录
2020-6-5
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四处流浪
433/500
排名
5608
昨日变化

1

主题

37

帖子

433

积分

Rank: 4

UID
264005
好友
0
蛮牛币
864
威望
0
注册时间
2018-1-11
在线时间
148 小时
最后登录
2020-6-4
2020-5-15 13:37:38 显示全部楼层
借鉴一下
回复

使用道具 举报

8常驻蛮牛
7837/10000
排名
249
昨日变化

0

主题

4023

帖子

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

帖子

18

积分

Rank: 1

UID
347133
好友
0
蛮牛币
2
威望
0
注册时间
2020-5-16
在线时间
6 小时
最后登录
2020-5-20
2020-5-17 14:33:42 显示全部楼层
6666666666666666666
回复 支持 反对

使用道具 举报

0

主题

6

帖子

11

积分

Rank: 1

UID
328760
好友
0
蛮牛币
1
威望
0
注册时间
2019-8-6
在线时间
5 小时
最后登录
2020-5-20
2020-5-20 12:18:43 显示全部楼层
感谢分享 已收藏
回复

使用道具 举报

0

主题

13

帖子

89

积分

Rank: 2Rank: 2

UID
325168
好友
0
蛮牛币
24
威望
0
注册时间
2019-6-19
在线时间
76 小时
最后登录
2020-6-5
2020-5-22 10:41:31 显示全部楼层
6666666值得学习
回复 支持 反对

使用道具 举报

3偶尔光临
282/300

0

主题

115

帖子

282

积分

Rank: 3Rank: 3Rank: 3

UID
342428
好友
0
蛮牛币
57
威望
0
注册时间
2020-3-16
在线时间
167 小时
最后登录
2020-6-4
2020-5-24 10:55:31 显示全部楼层

6666666666666666666
回复 支持 反对

使用道具 举报

4四处流浪
369/500
排名
16594
昨日变化

0

主题

73

帖子

369

积分

Rank: 4

UID
159377
好友
1
蛮牛币
132
威望
0
注册时间
2016-7-28
在线时间
254 小时
最后登录
2020-6-5
2020-5-25 10:25:41 显示全部楼层
马克一下代码
回复

使用道具 举报

4四处流浪
393/500
排名
10112
昨日变化

5

主题

77

帖子

393

积分

Rank: 4

UID
61899
好友
7
蛮牛币
0
威望
0
注册时间
2014-12-17
在线时间
203 小时
最后登录
2020-5-26
2020-5-26 10:55:06 显示全部楼层
thanks for share
回复

使用道具 举报

4四处流浪
370/500
排名
24130
昨日变化

0

主题

172

帖子

370

积分

Rank: 4

UID
8
好友
0
蛮牛币
6
威望
0
注册时间
2013-5-27
在线时间
181 小时
最后登录
2020-6-5
2020-5-27 10:20:46 显示全部楼层
看起来效果很不错
回复 支持 反对

使用道具 举报

0

主题

14

帖子

20

积分

Rank: 1

UID
312439
好友
0
蛮牛币
10
威望
0
注册时间
2019-1-22
在线时间
6 小时
最后登录
2020-6-3
2020-5-27 17:50:51 显示全部楼层
可以 很强大6666
回复

使用道具 举报

5熟悉之中
760/1000
排名
5514
昨日变化

2

主题

179

帖子

760

积分

Rank: 5Rank: 5

UID
258871
好友
0
蛮牛币
1107
威望
0
注册时间
2017-12-10
在线时间
321 小时
最后登录
2020-6-5
5 天前 显示全部楼层
可不可以做个圆环颜色渐变
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则