找回密码
 注册帐号

扫一扫,访问微社区

Unity Unity人物框视差效果

60
回复
1210
查看
打印 上一主题 下一主题
[ 复制链接 ]
排名
1089
昨日变化

33

主题

331

帖子

2365

积分

Rank: 9Rank: 9Rank: 9

UID
82788
好友
33
蛮牛币
7653
威望
0
注册时间
2015-3-21
在线时间
858 小时
最后登录
2019-9-27

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

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

x
有没有见过头像,像是一直看着鼠标的位置会动起来,这大概类似视差吧,类似下图:

下面在Unity里面,是如何创建一个简单的视差效果 , 在这种情况下 , 游戏中的 UI 是怎样的
大概步骤是这样:

  • 如果检查到鼠标内 , 然后 , 基于其旋转中心的距离。
  • 为了生成 “视差效应” 而将板旋转、平移使人物图像 (或者对象的作用向前 / 向后) 。在我示例中的 Z 值设定为 0。
  • 如果鼠标超出 RECT 和平稳地旋转,复位目标。
我使用函数anglelerp因为 , 如果你想使用vector3.lerp等等 , 转换工作不正常或者扰乱。(不知为啥,或者你们看看还有啥办法


ParallaxPanel.cs
[C#] 纯文本查看 复制代码
using UnityEngine;

[RequireComponent(typeof(RectTransform))]
public class ParallaxPanel : MonoBehaviour
{

    public float y_maxRot,y_pos;//不需要它沿此轴旋转,设置为0

   
    public float x_maxRot, x_pos;//不需要它沿此轴旋转,设置为0

    //旋转速度
    public float speed;

    RectTransform rect;
    //旋转对象
    public RectTransform rectToRotate;
    Vector2 targetEulerAngles = Vector3.zero;
    Vector2 targetPos = Vector3.zero;
    private void Awake()
    {
        rect = GetComponent<RectTransform>();
    }
    
    private void Update()
    {
        //鼠标位置和面板位置之间的差异
        Vector2 diff = (Vector2)transform.position - (Vector2)Input.mousePosition;

        //鼠标是否旋转对象内
        if (Mathf.Abs(diff.x) <= (rect.sizeDelta.x *0.5f) &&Mathf.Abs(diff.y) <= (rect.sizeDelta.y *0.5f))
        {
            float offset_X = -Mathf.Clamp(diff.y / (rect.sizeDelta.y * 0.5f), -1, 1);//随着鼠标与对象Y轴的距离,在[-1,1]之间输出
            float offset_Y = Mathf.Clamp(diff.x / (rect.sizeDelta.x * 0.5f), -1, 1);//随着鼠标与对象X轴的距离,在[-1,1]之间输出
            targetEulerAngles = new Vector3(x_maxRot * offset_X,y_maxRot * offset_Y,0);
            targetPos = new Vector3(x_pos * offset_X, y_pos * offset_Y, 0);
        }
        else 
        {
            //鼠标位于旋转对象之外,目标旋转为零
               targetEulerAngles = Vector3.zero;
            targetPos = Vector3.zero;
        }

        //旋转差值(没想出旋转差值代替方法)
        rectToRotate.eulerAngles = AngleLerp(rectToRotate.eulerAngles, targetEulerAngles, speed * Time.deltaTime);
        rectToRotate.anchoredPosition=Vector2.Lerp(rectToRotate.anchoredPosition, targetPos, speed * Time.deltaTime);
    }

    //两个角度差值(每个轴使用Mathf.LerpAngle)
    public static Vector3 AngleLerp(Vector3 StartAngle, Vector3 FinishAngle, float t)
    {
        return new Vector3(
            Mathf.LerpAngle(StartAngle.x, FinishAngle.x, t),
            Mathf.LerpAngle(StartAngle.y, FinishAngle.y, t),
            Mathf.LerpAngle(StartAngle.z, FinishAngle.z, t)
            );
    }

}

我的效果如下:

我把小demo也放出来了,感兴趣就看看:
游客,如果您要查看本帖隐藏内容请回复


好啦,明天休息才是王道


回复

使用道具 举报

5熟悉之中
825/1000
排名
3474
昨日变化

0

主题

161

帖子

825

积分

Rank: 5Rank: 5

UID
287099
好友
0
蛮牛币
2481
威望
0
注册时间
2018-6-24
在线时间
234 小时
最后登录
2019-9-26
沙发
2019-8-23 21:07:29 只看该作者
多谢分享
回复

使用道具 举报

5熟悉之中
825/1000
排名
3474
昨日变化

0

主题

161

帖子

825

积分

Rank: 5Rank: 5

UID
287099
好友
0
蛮牛币
2481
威望
0
注册时间
2018-6-24
在线时间
234 小时
最后登录
2019-9-26
板凳
2019-8-23 21:08:55 只看该作者
多谢分享
回复

使用道具 举报

5熟悉之中
600/1000
排名
5144
昨日变化

4

主题

99

帖子

600

积分

Rank: 5Rank: 5

UID
130665
好友
5
蛮牛币
77
威望
0
注册时间
2015-12-3
在线时间
217 小时
最后登录
2019-9-17
地板
2019-8-23 22:34:06 只看该作者
666666666666
回复

使用道具 举报

5熟悉之中
545/1000
排名
7021
昨日变化

3

主题

133

帖子

545

积分

Rank: 5Rank: 5

UID
293049
好友
2
蛮牛币
2339
威望
0
注册时间
2018-8-9
在线时间
221 小时
最后登录
2019-9-26
5#
2019-8-24 08:21:40 只看该作者
哇哦,效果不错
回复

使用道具 举报

7日久生情
2910/5000
排名
271
昨日变化

0

主题

106

帖子

2910

积分

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

UID
65835
好友
0
蛮牛币
15242
威望
0
注册时间
2015-1-5
在线时间
842 小时
最后登录
2019-9-27
QQ
6#
2019-8-24 08:27:50 只看该作者
实用小技巧
回复

使用道具 举报

4四处流浪
359/500
排名
15587
昨日变化
323

2

主题

215

帖子

359

积分

Rank: 4

UID
328743
好友
0
蛮牛币
86
威望
0
注册时间
2019-8-5
在线时间
94 小时
最后登录
2019-9-27
7#
2019-8-24 09:07:11 只看该作者
66666666666666666666
回复 支持 反对

使用道具 举报

5熟悉之中
736/1000
排名
3971
昨日变化

3

主题

95

帖子

736

积分

Rank: 5Rank: 5

UID
259967
好友
2
蛮牛币
611
威望
0
注册时间
2017-12-16
在线时间
252 小时
最后登录
2019-9-25
8#
2019-8-24 09:38:18 只看该作者
大佬!6666666666666666666,学到了!!!
回复 支持 反对

使用道具 举报

0

主题

14

帖子

50

积分

Rank: 2Rank: 2

UID
329538
好友
0
蛮牛币
330
威望
0
注册时间
2019-8-16
在线时间
36 小时
最后登录
2019-9-25
9#
2019-8-24 10:08:15 只看该作者
多谢分享
回复

使用道具 举报

0

主题

8

帖子

51

积分

Rank: 2Rank: 2

UID
175638
好友
0
蛮牛币
169
威望
0
注册时间
2016-10-14
在线时间
43 小时
最后登录
2019-9-26
10#
2019-8-24 10:38:59 只看该作者
有点6666666啊
回复

使用道具 举报

0

主题

8

帖子

51

积分

Rank: 2Rank: 2

UID
175638
好友
0
蛮牛币
169
威望
0
注册时间
2016-10-14
在线时间
43 小时
最后登录
2019-9-26
11#
2019-8-24 10:42:54 只看该作者
youdlh woleigequ  zhendexiudeaobuxing
回复 支持 反对

使用道具 举报

8常驻蛮牛
7586/10000
排名
23
昨日变化

1

主题

652

帖子

7586

积分

Rank: 8Rank: 8

UID
30356
好友
0
蛮牛币
8208
威望
0
注册时间
2014-6-19
在线时间
3739 小时
最后登录
2019-9-27
12#
2019-8-24 11:15:41 只看该作者
多谢分享多谢分享
回复 支持 反对

使用道具 举报

7日久生情
2262/5000
排名
4093
昨日变化

0

主题

1517

帖子

2262

积分

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

UID
254705
好友
1
蛮牛币
2046
威望
0
注册时间
2017-11-16
在线时间
383 小时
最后登录
2019-9-27
13#
2019-8-24 11:16:54 只看该作者
6666666666666666666666666
回复 支持 反对

使用道具 举报

3偶尔光临
175/300
排名
64937
昨日变化

0

主题

71

帖子

175

积分

Rank: 3Rank: 3Rank: 3

UID
313179
好友
0
蛮牛币
432
威望
0
注册时间
2019-1-30
在线时间
102 小时
最后登录
2019-9-27
14#
2019-8-24 11:34:32 只看该作者
6666666666666666666
回复 支持 反对

使用道具 举报

5熟悉之中
692/1000
排名
5900
昨日变化

0

主题

327

帖子

692

积分

Rank: 5Rank: 5

UID
11484
好友
0
蛮牛币
16
威望
0
注册时间
2013-12-31
在线时间
129 小时
最后登录
2019-9-27
15#
2019-8-24 12:08:59 只看该作者
多谢分享
回复

使用道具 举报

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

本版积分规则