unity | 动画模块之滚动选项框

这篇具有很好参考价值的文章主要介绍了unity | 动画模块之滚动选项框。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、效果动画

如果不是你们想要的,就省的你们继续往下看了

unity 滚动选择物品,# unity项目常用知识,unity,c#

 二、作者的话

对于我来说,计算一大堆数据很繁琐,就写了点简单的

三、基本功的要求

需要会使用Scroll View

四、进入正题 

1.先做一个scrollView把自己想做的东西放进去

unity 滚动选择物品,# unity项目常用知识,unity,c#

2.接下来的难度就是,当方块块移动到指定位置附近的时候,会变大

分析:scrollView在移动方块块的时候,移动的其实是Content的位置,

所以,方块块的本地位置是不变的,因此,我们都需要用世界坐标来计算

a.我们先确定一个想要的坐标

在这个图中,我就把第一个0的坐标,当成自己想要的坐标吧

unity 滚动选择物品,# unity项目常用知识,unity,c#

但是,这里我们要注意,待会放大的时候,我们应该希望从中间放大,

所以我们的坐标锚点需要改

unity 滚动选择物品,# unity项目常用知识,unity,c#

把坐标都改成中间的位置,这时候我们去看看坐标

unity 滚动选择物品,# unity项目常用知识,unity,c#

 他的坐标是(0,360),我们就以这个位置为基础,上下100就开始变化,

但是,这是本地坐标,我们需要(0,360)的世界坐标

b.把本地坐标转换成世界坐标

备注:本地坐标转换世界坐标的方法

public Vector2 anchorsPositon= new Vector2(0,360);

//本地转换世界坐标时,它需要知道这个坐标是谁的,或者说相对于谁的坐标
//在这里我们就是第一个0,那个物体
public Transform anvhorsPositonP;

   private void Start()
    {
        //TransformPoint(),是本地转世界坐标的方法
        wordPositon = anvhorsPositonP.TransformPoint(anchorsPositon);
    }

 c.确定最大能放大多大,和你怎么去计算

目标:代码计算看不懂在看这里

假如现在物体和我定的坐标相距400,然后我定的距离是300
那么倍数就是400/300=1.33,超过1了,所以我就不希望移动
如果现在距离是150,我定的距离是300,
那么倍数就是0.5,我就希望它放大50%

数学计算:

物体的坐标是y,我定的坐标是y1

那么y-y1的绝对值,就是坐标相距的距离

定的距离是d

那么(y-y1)的绝对值/d

上面算出了倍数

1-倍数,

是负数,就不放大,就是*1

如果是正数,就放大相应的倍数

备注方法:

Math.Max(一个数,另一个数)

这是选择谁大的方法,例int i =Math.Max(0,2)

答案就是2

   //这个脚本,我是打算每个方块上都挂一个的

    public Vector2 anchorsPositon= new Vector2(0,360);
    public Transform anvhorsPositonP;

    //我在选的坐标的上下150开始变化
    public float distance = 150;
    //最大变化1.5倍
    public float sizePersent = 1.5f;

    //记录一下初始的物体大小
    private Vector2 initialSize;
    //记录转换出来的世界坐标
    private Vector2 wordPositon;

    private void Start()
    {
        //这句就是记录现在这个方块是多大,宽多少,高多少
        initialSize = transform.GetComponent<RectTransform>().sizeDelta;
        //略,前面讲过了
        wordPositon = anvhorsPositonP.TransformPoint(anchorsPositon);
    }

    void Update()
    {
        //我知道现在这个方块的世界坐标的y
        float y = transform.position.y;

        //Math.Abs(y - wordPositon.y):计算现在这个坐标离我定的坐标还多远
        //(Math.Abs(y - wordPositon.y) / distance):计算这个距离是我希望距离的几倍
        //persent就是我最后打算放大多少
        float persent = Math.Max(0, 1 - (Math.Abs(y - wordPositon.y) / distance));

        //计算放大以后的宽高
        Vector2 size = initialSize + initialSize * (sizePersent - 1) * persent;
        //赋值计算好的宽高
        transform.GetComponent<RectTransform>().sizeDelta = size;
    }

d.最后把脚本都挂到物体上

unity 滚动选择物品,# unity项目常用知识,unity,c#

 五、现成的

以上是所有内容,但是想直接用不想看的宝这边请

如果链接打不开就是,还在被审核,因为刚发的

 https://download.csdn.net/download/weixin_49427945/87855137文章来源地址https://www.toymoban.com/news/detail-777007.html

到了这里,关于unity | 动画模块之滚动选项框的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity 性能优化三:动画模块、物理模块

    目录 动画模块 Mecanim 模块 1.1 Animator active的数量 1.1.1 Culling Mode 1.1.2 Optimize Gameobject 1.1.3 Apply Root Motion 1.1.4 Compute Skinning 1.1.5 Animator Initialize 1.2 Legacy动画 物理模块 2.1 物理更新次数 2.1 减少不必要的Collision 2.5 Auto Simulation 2.6 RaycastCommand 2.7 碰撞产生GC 2.8 Raycast、BoxCast、OverlapBox等

    2024年02月15日
    浏览(37)
  • Unity常用的动画类型

    在Unity中,动画主要有有三种类型: 1.序列帧动画 :通过快速播放一系列图片产生动画的效果,类似于 Gif一样 2.关节动画 :把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一 个整体的动画,角色比较灵活 3.骨骼动画 :应用最广泛的动画,结合上面

    2024年02月13日
    浏览(43)
  • 【Unity3D】Android 打包 ② ( Android 编译选项 | Android 工程设置 | 配置基本信息 | 配置不同分辨率图标 | 配置启动动画 | 其它设置 )

    在上一篇博客 【Unity3D】Android 打包 ① ( Android 编译选项 | 安装 Android Build Support 模块 ) 中 讲解了 Android 打包的最基本配置 , 安装 Android Build Support 模块 ; 本篇博客继续讲解后续工作 ; 在 Unity 编辑器中选择 \\\" 菜单栏 | File | Build Settings \\\" 选项 , 点击 Build Settings 对话框的左下角的

    2023年04月19日
    浏览(63)
  • 在 QML 中,ComboBox 是一种常用的用户界面控件,通常用于提供一个下拉式的选择框,允许用户从预定义的选项列表中选择一个值

    ComboBox 详解: 以下是 ComboBox 的一些重要属性和特性: model : 用于指定 ComboBox 中的选项列表,可以是一个数组、列表、模型或者其他可迭代的数据结构。 editable : 用于指定是否允许用户编辑 ComboBox 中的文本输入框,以便输入非预定义的选项。 currentIndex : 用于获取或设置当前

    2024年04月15日
    浏览(45)
  • Unity动画状态的获取和常用判断(逐步完善)

    AnimatorStateInfo minfo = m_animator.GetCurrentAnimatorStateInfo(0); 其中参数0代表Base Layer GetCurrentAnimatorStateInfo(0)即是获取当前动画控制器当前正在播放的动画状态 stateInfo.fullPathHash==Animator.StringToHash(\\\"Base Layer.attack\\\") stateInfo.fullPathHash即是当前动画控制器当前正在播放动画的Hash值 Animator.Stri

    2024年02月11日
    浏览(65)
  • BurpSuite—Project options模块(项目选择)

    本文主要BurpSuite—Project options模块(项目选择)介绍的相关内容 关于BurpSuite的安装可以看一下之前这篇文章: http://t.csdn.cn/cavWt Project options主要用来对Project的一些设置。 Project options主要由五个模块组成: 1.Connections 连接 2.HTTP 3.SSL 4.Sessions 5.Misc  杂项 1.Connections 连接 选项1:Pl

    2024年02月06日
    浏览(38)
  • Unity常用设计模式-策略模式:游戏中的智慧选择

    一、什么是策略模式?        策略模式是一种行为设计模式,它定义了一系列算法,并使得这些算法可以相互替换,而使得使用算法的客户端代码不受影响。在策略模式中,算法被封装成独立的类,使得它们可以独立于客户端而变化。这种模式提供了一种简单而强大的方法

    2024年02月20日
    浏览(42)
  • Unity 编辑器选择器工具类Selection 常用函数和用法

    点击封面跳转下载页面 在Unity中,Selection类是一个非常有用的工具类,它提供了许多函数和属性,用于操作和管理编辑器中的选择对象。本文将介绍Selection类的常用函数和用法,并提供相应的示例代码。 功能: 获取或设置当前活动的上下文对象。 示例代码: 功能: 获取或

    2024年02月14日
    浏览(47)
  • vue 监听滚动条 页面滚动动画

    以页面底部的“回到顶部”功能为例,滚动动画的实现思路是,当点击按钮时,获取当前滚动条的位置,调用定时器函数,每个时间间隔对滚动条的位置递减,直至减小到0,清除定时器,即可回到页面顶部。 当滚动条没有离开首页的一个屏幕高度时,“回到顶部”按钮应设

    2024年02月06日
    浏览(44)
  • 【动画进阶】当路径动画遇到滚动驱动!

    我的小册 《CSS 技术揭秘与实战通关》上线了,想了解更多有趣、进阶、系统化的 CSS 内容,可以猛击 - LINK。 本文,我们将一起利用纯 CSS,实现如下这么个酷炫的效果: 在一年前,我介绍了 CSS 中非常新奇有趣的一个新特性 -- @scroll-timeline :革命性创新,动画杀手锏 @scro

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包