【游戏技术群】959392658  【游戏出海群】12067810
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

问答求助

关注:575

当前位置:游戏蛮牛 技术专区 问答求助

_____________________________________________________________________________________________________________
问答求助版块规则:

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 1479|回复: 6

[基本操作] 求鼠标右键拖动控制物体平滑缓动旋转的代码

[复制链接]  [移动端链接]
6蛮牛粉丝
1008/1500
排名
2764
昨日变化
8

1

主题

44

帖子

1008

积分

Rank: 6Rank: 6Rank: 6

UID
93140
好友
0
蛮牛币
2753
威望
0
注册时间
2015-4-17
在线时间
437 小时
最后登录
2019-2-22
发表于 2018-12-6 12:53:06 | 显示全部楼层 |阅读模式
20蛮牛币
目前实现了旋转,但是很突兀,想实现下缓动效果      

  if (Input.GetMouseButton(1))
        {

            transform.Rotate(Vector3.up, -Input.GetAxis("Mouse X") * 10, Space.World);

            transform.Rotate(Vector3.right, Input.GetAxis("Mouse Y") * 10, Space.World);
        }



回复

使用道具 举报

7日久生情
2691/5000
排名
2098
昨日变化
5

13

主题

1160

帖子

2691

积分

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

UID
168159
好友
4
蛮牛币
6211
威望
0
注册时间
2016-9-12
在线时间
854 小时
最后登录
2019-2-22
发表于 2018-12-6 12:53:07 | 显示全部楼层
本帖最后由 ceshi12580 于 2018-12-7 09:30 编辑

[C#] 纯文本查看 复制代码
    float x, y;
    bool slowDown;

	void Update () {
        if (Input.GetMouseButton(1))
        {
            x = Input.GetAxis("Mouse X");
            y = Input.GetAxis("Mouse Y");

        }

        if (Input.GetMouseButtonUp(1))
        {
            slowDown = true;
        }

        if (slowDown)
        {
            x = Mathf.Lerp(x, 0, Time.deltaTime);
            y = Mathf.Lerp(y, 0, Time.deltaTime);

            if (x == 0 && y == 0)
            {
                slowDown = false;
            }
        }

        transform.Rotate(Vector3.up, -x * 10, Space.World);
        transform.Rotate(Vector3.right, y * 10, Space.World);

    }



回复

使用道具 举报

6蛮牛粉丝
1012/1500
排名
3523
昨日变化
20

2

主题

221

帖子

1012

积分

Rank: 6Rank: 6Rank: 6

UID
227258
好友
1
蛮牛币
1458
威望
0
注册时间
2017-6-17
在线时间
365 小时
最后登录
2019-2-20
发表于 2018-12-6 15:05:50 | 显示全部楼层
我也用的spaceworld,感觉还好啊,你可以看看:
bool m_ClickOnUI;
private void DragModel()
        {
#if UNITY_EDITOR
            if (Input.GetMouseButtonDown(0))
            {
                m_beginVec = Input.mousePosition;
                if (EventSystem.current.IsPointerOverGameObject())
                {
                    m_ClickOnUI = true;
                    return;
                }
            }
            if (Input.GetMouseButton(0))
            {
                if (m_ClickOnUI)
                    return;
                m_dragVec = Input.mousePosition;
                if (Mathf.Abs(m_dragVec.x - m_beginVec.x) < 10)
                    return;
                float tmpSpeed = m_dragVec.x - m_beginVec.x > 0 ? -m_dragSpeed : m_dragSpeed;
                m_RotationTrans.Rotate(Vector3.up, tmpSpeed, Space.World);
                m_beginVec = Input.mousePosition;
            }
            if (Input.GetMouseButtonUp(0))
            {
                m_ClickOnUI = false;
            }

#else
            if (Input.touchCount != 0)
            {
                if (Input.touches[0].phase == TouchPhase.Began)
                {
                     m_beginVec = Input.touches[0].position;
                if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
                {
                     m_ClickOnUI = true;        
                     return;
                }
                }
                if (Input.touches[0].phase == TouchPhase.Moved)
                {
                    if (m_ClickOnUI)
                    return;        
                    m_dragVec = Input.touches[0].position;
                    float tmpSpeed = m_dragVec.x - m_beginVec.x > 0 ? -m_dragSpeed : m_dragSpeed;
                    m_RotationTrans.Rotate(Vector3.up, tmpSpeed, Space.World);
                    m_beginVec = Input.touches[0].position;
                }
                if (Input.touches[0].phase == TouchPhase.Ended)
                {
                    m_ClickOnUI = false;
                }
            }
#endif
        }

回复

使用道具 举报

6蛮牛粉丝
1008/1500
排名
2764
昨日变化
8

1

主题

44

帖子

1008

积分

Rank: 6Rank: 6Rank: 6

UID
93140
好友
0
蛮牛币
2753
威望
0
注册时间
2015-4-17
在线时间
437 小时
最后登录
2019-2-22
 楼主| 发表于 2018-12-6 15:15:39 | 显示全部楼层
夏目冬青 发表于 2018-12-6 15:05
我也用的spaceworld,感觉还好啊,你可以看看:
bool m_ClickOnUI;
private void DragModel()

可能我说表述的不太对,我要的效果不是这种鼠标抬起来就不转的效果,就是跟相机跟随那种 有个缓冲的效果
[发帖际遇]: 不要香菜 被钱袋砸中进医院,看病花了 2 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

6蛮牛粉丝
1290/1500
排名
2615
昨日变化
9

11

主题

291

帖子

1290

积分

Rank: 6Rank: 6Rank: 6

UID
208404
好友
1
蛮牛币
5874
威望
0
注册时间
2017-2-24
在线时间
420 小时
最后登录
2019-2-22
发表于 2018-12-6 16:58:20 | 显示全部楼层
* Time.deltaTime 就平滑了。你后面的10 也做个speed的变量。快慢就调整speed的值就可以了。

回复

使用道具 举报

6蛮牛粉丝
1012/1500
排名
3523
昨日变化
20

2

主题

221

帖子

1012

积分

Rank: 6Rank: 6Rank: 6

UID
227258
好友
1
蛮牛币
1458
威望
0
注册时间
2017-6-17
在线时间
365 小时
最后登录
2019-2-20
发表于 2018-12-6 17:50:34 | 显示全部楼层
不要香菜 发表于 2018-12-6 15:15
可能我说表述的不太对,我要的效果不是这种鼠标抬起来就不转的效果,就是跟相机跟随那种 有个缓冲的效果 ...

慢慢不转,停下来?

回复

使用道具 举报

7日久生情
2103/5000
排名
1508
昨日变化
5

0

主题

670

帖子

2103

积分

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

UID
135463
好友
0
蛮牛币
264
威望
0
注册时间
2016-1-23
在线时间
595 小时
最后登录
2019-2-22
发表于 2018-12-17 08:44:47 | 显示全部楼层
66666666666666666666666

回复

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表