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

news2024/12/28 4:19:44

一、效果动画

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

 二、作者的话

对于我来说,计算一大堆数据简直太难了,所以自己想了点方法

三、基本功的要求

需要会使用Scroll View

四、进入正题 

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

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

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

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

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

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

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

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

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

 他的坐标是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.最后把脚本都挂到物体上

 五、现成的

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

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

 https://download.csdn.net/download/weixin_49427945/87855137

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/601032.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu22.04 VirtualBox

Ubuntu22.04 VirtualBox 通常三种虚拟机网络连入模式 桥接网卡 虚拟网卡连入宿主机所在的路由器&#xff0c;公用一个网关地址&#xff0c;自动分配路由器ip到虚拟网卡上&#xff0c;相当于和物理机一样的地址&#xff0c;在同一网段&#xff0c;其他物理机和这个虚拟机一样…

作为一个前端Leader,当你接到一个项目时,应该如何初始化您的项目

1、分析需求 拿到需求后&#xff0c;不是立马动工&#xff0c;我们需要先了解项目的业务需求和用户需求&#xff0c;并明确项目的范围&#xff0c;包括功能点、时间和预算等&#xff0c;来确定项目需求和范围。 2、技术栈选择 根据项目的需求和范围以及团队成员的技术栈&…

aosp12 framework重大bug:contentprovider获取低概率偶现延时10s问题修复经验分享

问题背景&#xff1a; 在android12的版本上&#xff0c;陆陆续续发现一个低概率偶现的问题&#xff0c;那就是桌面第一次启动会存在显示空白10s以上&#xff0c;正常空白一般在1-2s&#xff0c;在个空白10s以上确实就属于非常严重的问题&#xff0c;但这个是一个低概率偶现问题…

Linux - 第21节 - 网络基础(数据链路层)

1.数据链路层 数据链路层解决的问题&#xff1a; • IP拥有将数据跨网络从一台主机送到另一台主机的能力&#xff0c;但IP并不能保证每次都能够将数据可靠的送到对端主机&#xff0c;因此IP需要上层TCP为其提供可靠性保证&#xff0c;比如数据丢包后TCP可以让IP重新发送数据&am…

SpringBoot使用用户输入的自定义数据源启动【附源码】

一、项目背景 不知道小伙伴们有没有遇到过这样的需求&#xff0c;就是一个项目启动时不知道数据源&#xff0c;需要项目无数据源启动后&#xff0c;用户在画面自定义录入数据源信息&#xff0c;然后项目再初始化数据库链接&#xff0c;初始化管理员用户。最后项目进入正常使用…

cuda2 向量加法

向量加法 向量加法程序解读 #include<stdio.h> #include<cuda.h>typedef float FLOAT; #define USE_UNIX 1 区别不同系统 get thread id 1D block and 2D grid #define get_tid() (block)get block id&#xff0c; 2D gridwarm up 可选的&#xff0c;让gpu先运作…

2023年湖北住建厅八大员怎么考取施工员质量员资料员等岗位???

2023年湖北住建厅八大员怎么考取施工员质量员资料员等岗位&#xff1f;&#xff1f;&#xff1f; 2023年湖北住建厅八大员具体包含哪些岗位呢&#xff0c;可以选择的有施工员&#xff0c;质量员&#xff0c;资料员&#xff0c;材料员&#xff0c;机械员&#xff0c;标准员&…

用python进行办公自动化都需要学习什么知识呢?

本文先来分享Python实现自动化办公需要学什么&#xff0c;从哪里学&#xff01;以及自动化办公技巧的资源整理… 很多非IT职场人&#xff0c;想要把Python用到工作中&#xff0c;却不知道如何下手。其实自动化办公无非就是Excel、PPT、Word、邮件、文件处理、数据分析处理、爬虫…

chatgpt赋能python:Python写模拟器脚本

Python写模拟器脚本 Python是一种强大的编程语言&#xff0c;适用于各种任务&#xff0c;包括模拟器编写。模拟器是一种软件程序&#xff0c;能够模拟硬件或软件系统的行为。这篇文章将介绍Python编写模拟器脚本时需要关注的一些关键点。 为什么选择Python编写模拟器脚本 Py…

Vue+springboot个人博客网站系统的设计与实现3virm

本课题采用Java Web技术来设计开发一个可以发表文章、浏览文章的博客系统。课题主要包括前台博客系统以及后台管理系统&#xff1a;前台博客系统应该具备浏览文章&#xff08;能够实现分类查找、关键字查找、首页推荐等&#xff09;、评论文章&#xff08;用户能够对自己喜爱的…

chatgpt赋能python:Python的几次幂

Python的几次幂 Python是一种适用于多种任务的高级编程语言&#xff0c;可以用于网站开发&#xff0c;数据分析&#xff0c;机器学习以及人工智能等。其优越的设计和灵活的语法使其成为程序员众所周知和喜爱的语言。其中&#xff0c;Python中的乘方运算是其中一个非常常用的算…

OA系统开发设计

项目介绍 基于开源流程引擎camunda开发的办公自动化系统。采用前后端分离架构&#xff0c;基于可视化的表单建模、流程建模工具&#xff0c;零代码快速构建业务OA应用。 项目演示 演示地址请私信作者。 技术栈 后端&#xff1a;SpringBootJWTShiromybatis-plus 流程引擎&a…

mysql多级分类设计

简介 在数据库设计中&#xff0c;经常会遇到需要存储多级分类信息的情况&#xff0c;如商品分类、地区分类等。本文将详细介绍如何在MySQL中设计和管理多级分类数据 解决方案 一. 层级字段&#xff08;Hierarchy Field&#xff09;方法 层级字段方法是最常见和简单的多级分…

用redis的消息订阅功能更新应用内的caffeine本地缓存

1、为什么要更新caffeine缓存&#xff1f; 1.1&#xff0c;caffeine缓存的优点和缺点 生产环境中&#xff0c;caffeine缓存是我们在应用中使用的本地缓存&#xff0c; 它的优势在于存在于应用内&#xff0c;访问速度最快&#xff0c;通常都不到1ms就能做出响应&#xff0c; 缺…

Gitlab数据自动备

【场景】&#xff1a;将Gitlab服务器定时备份到Gitlab备份服务器 1.设置Gitlab服务器以及Gitlab备份服务器时间 1.1查看系统时间&#xff1a; date 1.2修改具体时间&#xff1a; date -s "2023-06-02 15:15:00" 1.3把时间写入CMOS&#xff1a; clock -w 1.4把…

深入了解Altium Designer 2023的规则设置

在PCB设计中&#xff0c;规则设置是确保PCB设计符合标准和规范的关键步骤&#xff0c;Altium Designer 2023作为一款强大的PCB设计软件&#xff0c;提供了丰富的规则设置功能&#xff0c;可帮助电子工程师实现高效准确的设计。下面将详细介绍AD 2023中的规则设置功能&#xff0…

【OpenMMLab AI实战营第二期笔记】人体关键点检测与MMPose

人体关键点检测与MMPose 介绍 人体姿态估计&#xff08;Human Pose Estimation&#xff09;是计算机视觉领域中的一个重要研究方向&#xff0c;也是计算机理解人类动作、行为必不可少的一步&#xff0c;人体姿态估计是指通过计算机算法在图像或视频中定位人体关键点&#xff…

TDEngine3.0环境搭建总结

TDEngine3.0环境搭建总结 一、TDengine 介绍二、TDengine的下载三、TDengine Server安装及配置3.1 安装3.2 taos的参数配置3.3 启动3.4 taosAdapter 四、TDengine Client 安装4.1 linux客户端安装4.2 windows客户端安装 一、TDengine 介绍 TDengine 官网 TDengine的介绍   T…

算法工程师的岗位职责(合集)

算法工程师的岗位职责1 职责&#xff1a; 1、负责运动控制的数据采集、信号处理、仪器控制等模块研发和维护,包括关键技术方案设计/详细设计/调试/验证/测试/现场调试 2、编写软件使用说明书等相关技术性文件 3、完成项目中有关机器人轨迹设计、分析、控制的需求分析(7轴机械手…

Maven依赖传递

Maven 依赖传递是 Maven 的核心机制之一&#xff0c;它能够一定程度上简化 Maven 的依赖配置。本节我们将详细介绍依赖传递及其相关概念。 依赖传递 如下图所示&#xff0c;项目 A 依赖于项目 B&#xff0c;B 又依赖于项目 C&#xff0c;此时 B 是 A 的直接依赖&#xff0c;C…