unity学习笔记----游戏练习04

一、开发阳光生产功能

向日葵的生产过程需要动画和时间

1.生产动画

选中Sunflower,然后选中窗口再选中

创建新的剪辑开始制作动画,向日葵生产动画的过程是一个从暗到亮然后持续一段时间再到暗的过程。因此只需要在对应的时间改变颜色即可。

为了保证是在动画高亮的时候产生阳光,因此要添加关键帧事件在对应位置,如下:

然后在PlantManager脚本中添加一个用于生产阳光的方法。

然后为帧事件添加对应的方法,步骤如下:

这样当动画执行到这个关键帧事件时就会调用这个方法。

现在动画已经做好了该如何播放呢?

要在动画状态机里面去设置,打开动画器

这个默认是播放Idle动画的,我们需要它在生产阳光的时候去播放Glowing动画,而且需要这两个动画同时去播放。

要添加一个新的Layers层,让其用来播放发光动画。

但是不能让发光状态为默认状态,要新建一个默认的空状态,然后再合适的情况下在切换到发光状态。并且将权重设置为1,这样动画才会对向日葵同时起作用。

如果控制这两个参数的切换呢?可以通过一个参数来控制,为其添加一个Trigger类型参数。

然后检测这个参数,当为true的时候就进行切换。并将退出时间不勾选

当播放完成后就自动切换回来。

下面通过代码来控制,发光动画的播放。

由于生产阳光这个功能只在这个向日葵身上才有的这个功能,因此需要把这个生产阳光的功能放在一个子类身上。还要将PlantManager里面的用于切换植物为启用状态的方法设置为虚方法,并在其子类中重写,这样就控制植物的状态了。代码如下:

   public float produceDuration = 5;
    private float produceTimer = 0;
    private Animator anim;

    private void Awake()
    {
        anim = GetComponent<Animator>();
    }


    //阳光状态的切换
    protected override void EnableUpdata()
    {
        produceTimer += Time.deltaTime;
        if(produceTimer > produceDuration)
        {
            produceTimer = 0;
            anim.SetTrigger("IsGlowing");

        }
    }

回到Unity中将将Sunflower预制体上的脚本更换为SunFlower,运行后效果如下:

每隔一段时间,向日葵就会播放一次发光动画。

2.创建阳光的Prefab和阳光的实例化

   public void ProduceSun()
    {
        GameObject go = GameObject.Instantiate(sunPrefab, transform.position, Quaternion.identity);
        float distance = Random.Range(23, 77);
        distance = Random.Range(0, 2) < 1 ? -distance : distance;
        Vector3 position = transform.position;
        position.x += distance;
        go.GetComponent<SunControl>().JumpTo(position);
    }

这个方法用于阳光的实例化,然后获取一个位置来确定阳光移动的最远距离。并将获得的位置坐标传入JumpTo()方法。

想要这个阳光实例化之后看起来更自然些,就在阳光的预制体上添加以一个脚本用于控制相关运动。

需要在脚本写一个方法用于向日葵的跳跃,借助Dotween插件。

    public void JumpTo(Vector3 targetPosition)
    {
        Vector3 centerPos = (transform.position + targetPosition) / 2;
        //获取俩点间的距离
        float distance = Vector3.Distance(transform.position, targetPosition);
        centerPos.y += (distance / 2);
        //路径、持续时间、平滑曲线
        transform.DOPath(new Vector3[] { transform.position, centerPos, targetPosition }, moveDuration, PathType.CatmullRom).SetEase(Ease.OutQuad);

    }

这个方法是根据传入的参数来获取到三个点的位置,最后在调用DOPath方法来实现一个抛物线的动画效果。效果如下:

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

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

相关文章

使用IDEA创建使用 JDK8 的 2.x.x 版本的 Spring Boot 项目以及 Spring Boot 项目如何修改JDK版本

目录 一、在阿里云上官网上创建项目 二、将 IDEA 中创建项目的源地址修改为阿里云官网 三、创建 3.x.x 的项目之后修改配置降低至 2.7.x 版本和使用 JDK8&#xff08;修改 Spring Boot 的 JDK 版本同理&#xff09; 从上面的 Spring Boot 官网的截图中可以发现&#xff0c;自…

爬取豆瓣电影top250的电影名称(完整代码与解释)

在爬取豆瓣电影top250的电影名称之前&#xff0c;需要在安装两个第三方库requests和bs4&#xff0c;方法是在终端输入&#xff1a; pip install requestspip install bs4 截几张关键性图片&#xff1a; 豆瓣top250电影网页 运行结果 测试html文件标签的各个方法的作用&#xf…

wy的leetcode刷题记录_Day71

wy的leetcode刷题记录_Day71 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间&#xff1a;2024-1-3&#xff08;补&#xff09; 前言 目录 wy的leetcode刷题记录_Day71声明前言2487. 从链表中移除节点题目介绍思路代码收获 509. 斐波那契数题目介绍思…

低压浪涌保护防雷器的应用方案

浪涌是指电力系统中出现的瞬时过电压或过电流&#xff0c;它们的持续时间很短&#xff0c;但幅值很高&#xff0c;可能达到几千伏或几千安。浪涌的主要来源有两种&#xff1a;一是雷电冲击&#xff0c;二是电力系统的切换操作。浪涌会对电气设备造成严重的损坏&#xff0c;甚至…

跨境电商源码技术大揭秘:9个最常见的问题及解决方案

跨境电商发展迅猛&#xff0c;源码技术成为关键。作为跨境电商源码领域的专家&#xff0c;我将向大家揭秘9个最常见的问题及解决方案&#xff0c;帮助您更好地应对挑战&#xff0c;实现技术优化。 问题一&#xff1a;跨境电商源码性能瓶颈如何解决&#xff1f; 跨境电商源码性…

【数据库原理】(7)关系数据库的完整性约束

关系模型的完整性规则是为了确保数据的唯一性和数据之间的关系的准确性。 有三类完整性约束:实体完整性、参照完整性和用户定义完整性。 其中实体完整性和参照完整性是必须满足的完整性约束条件,应该由关系系统自动支持。 实体完整性 实体完整性的核心概念 唯一性&#xf…

陪诊系统|北京陪诊小程序提升陪诊服务效果

随着科技的不断发展&#xff0c;人们对于医疗服务的需求也越来越高。在过去&#xff0c;陪诊师和陪诊公司通常需要通过电话或传真等传统方式与医院进行沟通和安排。然而&#xff0c;现在有了陪诊小程序&#xff0c;这些问题得到了解决。本文将介绍陪诊小程序的开发流程和功能&a…

【python高级用法】线程

前言 Python通过标准库的 threading 模块来管理线程。这个模块提供了很多不错的特性&#xff0c;让线程变得无比简单。实际上&#xff0c;线程模块提供了几种同时运行的机制&#xff0c;实现起来非常简单。 线程模块 线程对象Lock对象RLock对象信号对象条件对象事件对象 简单…

Java学习——设计模式——介绍

文章目录 设计模式介绍UML的类图表示类与类之间关系的表示关联关系聚合关系组合关系依赖关系继承关系实现关系 设计模式介绍 设计模式design patterns&#xff0c;指在软件设计中&#xff0c;被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码&#xff0c;提…

纯前端上传word,xlsx,ppt,在前端预览并下载成图片(预览效果可以,下载图片效果不太理想)

纯前端上传word,xlsx,ppt,在前端预览并下载成图片&#xff08;预览效果可以&#xff0c;下载图片效果不太理想&#xff09; 一.安装依赖二、主要代码 预览效果链接: https://github.com/501351981/vue-office 插件文档链接: https://501351981.github.io/vue-office/examples/d…

pth.tar的保存和读取

一、简介 在PyTorch中&#xff0c;.pt、.pth和.pth.tar都是保存训练好的模型的文件格式。主要区别在于&#xff1a; .pt是PyTorch1.6及以上版本中引入的保存格式&#xff0c;可以保存整个模型&#xff0c;包括模型结构、模型参数以及优化器状态等信息&#xff0c;是一个二进制文…

【C++入门到精通】function包装器 | bind() 函数 C++11 [ C++入门 ]

阅读导航 引言一、function包装器1. 概念2. 基本使用3. 逆波兰表达式求值&#xff08;1&#xff09;普通写法&#xff08;2&#xff09;使用包装器以后的写法 二、bind() 函数温馨提示 引言 很高兴再次与大家分享关于 C11 的一些知识。在上一篇文章中&#xff0c;我们讲解了 c…

【Linux系统编程二十六】:线程控制与线程特性(Linux中线程库/线程创建/线程退出/线程等待)

【Linux系统编程二十六】&#xff1a;线程控制与线程特性 一.Linux线程库pthread1.线程控制块2.线程tid3.线程栈 二.线程控制1.线程创建2.线程退出3.线程等待 三.线程的特性1.独立栈2.局部存储3.线程可分离 一.Linux线程库pthread 在Linux中&#xff0c;是没有明确的线程概念的…

19个地信专业可以投的岗位汇总【GIS求职秘籍】

今天给大家详细科普一下&#xff0c;GIS专业的同学毕业以后还能从事哪些岗位的工作。 &#xff08;这期不包含学校老师等事业编岗位&#xff09; 一、GIS数据采集和处理 GIS数据采集和处理在这里分为一个大类&#xff0c;包含前期测绘外业的实地采集&#xff0c;后续的数据加…

石化行业设备管理系统的作用

石化行业是全球经济中不可或缺的重要组成部分&#xff0c;它涵盖了石油、天然气、化工等领域。在这个高风险和高安全要求的行业中&#xff0c;设备的可靠性和安全性至关重要。为了有效管理和维护设备&#xff0c;石化公司越来越多地采用设备管理系统&#xff0c;以提高生产效率…

MongoDB—SQL到MongoDB映射图表

一、术语和概念 下表显示了各种 SQL 术语和概念 以及相应的 MongoDB 术语和概念。 SQL Terms/Concepts MongoDB Terms/Concepts database database table collection row document or BSON document column field index index table joins $lookup, embedded docu…

CSS 伪类函数 :is() 和 :where()

在编写 CSS 时&#xff0c;有时可能会使用很长的选择器列表来定位具有相同样式规则的多个元素。例如&#xff0c;如果您想对标题中的 b 标签进行颜色调整&#xff0c;我们应该都写过这样的代码&#xff1a; h1 > b, h2 > b, h3 > b, h4 > b, h5 > b, h6 > b…

不想root,但想远程控制vivo手机?这个方法不用root也能做到

远程控制vivo手机不用root&#xff01;今天给大家讲讲免Root情况下&#xff0c;笔记本电脑如何远程控制vivo手机。 在电脑和手机都安装AirDroid&#xff0c;这是免Root的关键。 下载AirDroid个人版 | 远程控制安卓手机软件下载下载AirDroid个人版进行文件传输和管理、远程控制安…

八、HTML 链接

一、HTML 链接 HTML 使用超级链接与网络上的另一个文档相连。 HTML中的链接是一种用于在不同网页之间导航的元素。 链接通常用于将一个网页与另一个网页或资源&#xff08;如文档、图像、音频文件等&#xff09;相关联。 链接允许用户在浏览网页时单击文本或图像来跳转到其…

Python进程、线程、协程:多任务并发编程指南

概要 在当今计算机时代&#xff0c;为了提高程序的性能和响应速度&#xff0c;多任务并发编程成为了一种必不可少的技术手段。而Python作为一门高级编程语言&#xff0c;提供了多种多任务并发编程的方式&#xff0c;包括进程、线程和协程。本文将详细介绍这三种方式的使用教程…