【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版10(附带项目源码)

news2024/11/15 18:36:51

最终效果

在这里插入图片描述

系列导航

文章目录

  • 最终效果
  • 系列导航
  • 前言
  • 使用DoTween优化阳光生成和拾取效果
    • 拾取阳光优化
    • 生成阳光优化
  • 场景加载进度条
    • 新增加载场景Loading,绘制开始界面
    • 绘制菜单界面
    • 滑动滚轮一直滚动
  • 场景加载
  • 源码
  • 结束语

前言

本节主要实现使用DoTween优化阳光生成和拾取效果,场景切换加载进度条

使用DoTween优化阳光生成和拾取效果

拾取阳光优化

修改Sun

bool isMoving;

//当鼠标或手指经过物体时触发
public void OnMouseOver()
{
	if (isMoving) return;
    isMoving = true;
    transform.DOMove(Camera.main.ScreenToWorldPoint(UIManager.Instance.pickUpPos.position), 0.5f).OnComplete(
        () =>
        {
            GameManager.Instance.SetSunSum(sun);
            AudioManager.Instance.PlaySFX("拾取阳光");
            Destroy(gameObject);
        }
    );
}

效果
在这里插入图片描述

生成阳光优化

修改SunFlower

//产生阳光
public void ProduceSunshine()
{
    AudioManager.Instance.PlaySFX("生产阳光");
    // 在单位圆内生成随机点
    Vector2 randomPoint = Random.insideUnitCircle * produceDistance;
    // 将随机生成位置
    Vector3 spawnPosition = new Vector3(randomPoint.x, randomPoint.y, 0f) + transform.position;

    Transform tf = Instantiate(sunshine, spawnPosition, Quaternion.identity); // 生成阳光

    //慢慢变大动画效果
    tf.DOScale(Vector3.one, 0.5f).From(Vector3.zero);
}

效果
在这里插入图片描述

场景加载进度条

新增加载场景Loading,绘制开始界面

在这里插入图片描述
加载直接用一个滑动条,禁用背景图片,修改滑动条和滑动滚轮背景图片即可,记得禁用可拖动功能,并修改禁止透明和颜色
在这里插入图片描述
修改滑动条为已填充,水平模式
在这里插入图片描述
效果
在这里插入图片描述

绘制菜单界面

新增菜单场景Menu,简单绘制界面,先加一个背景图片即可
在这里插入图片描述

滑动滚轮一直滚动

新增Rotate ,这里使用了DOTween库来实现游戏对象的旋转动画,并且设置为循环播放。

public class Rotate : MonoBehaviour {
    private void Start() {
        transform.DORotate(new Vector3(0, 0, -360), 2f, RotateMode.FastBeyond360).SetEase(Ease.Linear).SetLoops(-1, LoopType.Restart);
    }
}

效果
在这里插入图片描述

场景加载

具体看这一篇文章就行了:【Unity实战】切换场景加载进度和如何在后台异步加载具有庞大世界的游戏场景,实现无缝衔接(附项目源码)

新增MainMenuManager,因为我们的场景比较小,时间加载会很快,所以这里加载进度直接用虚拟的就可以了

public class MainMenuManager : MonoBehaviour
{
    [SerializeField] private Slider _loadingBar;//加载进度条
    [SerializeField] private SceneField _levelScene;//加载场景
    [SerializeField] private GameObject btnStart;//开始游戏按钮
    [SerializeField] private float loadingTime = 2;//加载时间
    private float curProgress;

    private void Start()
    {
        AudioManager.Instance.PlayMusic("ThemeSong");
        _loadingBar.value = 0;
        btnStart.SetActive(false);
    }
    
    private void Update()
    {
        curProgress += Time.deltaTime / loadingTime;
        if (curProgress >= 1){
            curProgress = 1;
            btnStart.SetActive(true);
        }
        _loadingBar.value = curProgress;
    }

    //开始游戏
    public void StartGame()
    {
        AudioManager.Instance.PlayMusic("bgm2");
        //加载场景
        SceneManager.LoadScene(_levelScene);
        //清除 DOTween 库中当前正在进行的所有动画和补间
        DOTween.Clear();
    }
}

配置
在这里插入图片描述
效果
在这里插入图片描述

源码

源码不出意外的话我会放在最后一节

结束语

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,以便我第一时间收到反馈,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,出于兴趣爱好,最近开始自学unity,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!php是工作,unity是生活!如果你遇到任何问题,也欢迎你评论私信找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~

在这里插入图片描述

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

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

相关文章

Linux运维实用小脚本,登录即自动显示系统信息

systeminfo.sh #!/bin/bash # systeminfo.sh # by 运维朱工 # site:bash.lutixia.cn ##################################### 获取IP地址和主机名 IP_ADDR$(hostname -I | cut -d -f1) HOSTNAME$(hostname)# CPU负载信息: cpu_load() {echo -e "\…

JAVA基础--MAVEN

MAVEN的认识 什么是MAVEN Maven是一个项目构建及管理工具,开发团队几乎不用花多少时间就能够自动完成工程的基础构建配置, Maven 使用了一个标准的目录结构在不同开发工具中也能实现项目结构的统一。 统一项目结构 Maven提供了清理,编译&a…

【二进制部署k8s-1.29.4】十三、metrics-server的安装部署

文章目录 简介 一.metrics-server的安装 简介 本章节主要讲解metrics-server的安装,metrics-server主要是用于采集k8s中节点和pod的内存和cpu指标,在观察几点和pod的实时资源使用情况还是比较有用的,如果需要记录历史信息,建议采用…

Java到AI大模型,我为什么选择的后者

我为什么从Java转到AI大模型 在编程的海洋里,Java一直是我信赖的“小船”,载着我航行在代码的世界中。然而,随着行业的不断发展和变化,我开始感受到了一丝的迷茫和不安。我开始担心,随着技术的不断更新,Ja…

材料科学基础:期末计算题(第6章)结晶驱动力与过冷度

材料科学基础&#xff1a;计算题&#xff08;第6章&#xff09; 结晶驱动力与过冷度 ∆ G < 0 ; G H − T S ∆G<0; GH-TS ∆G<0;GH−TS d G d T d H d T − S − T d S d T \frac{dG}{dT}\frac{dH}{dT}-S-T\frac{dS}{dT} dTdG​dTdH​−S−TdTdS​ d G d T d H d …

B站画质补完计划(3):智能修复让宝藏视频重焕新生

1 老片存在什么画质问题&#xff1f; B站作为一个拥有浓厚人文属性的平台社区&#xff0c;聚集了诸如《雍正王朝》、《三国演义》等经典影视剧集&#xff0c;同时也吸引了大量用户欣赏、品鉴这些人文经典 。但美中不足的是&#xff0c;由于拍摄年代久远、拍摄设备落后、数据多次…

一次会见苹果App Review专家的在线研讨会

本篇我们来聊聊一次会见苹果App Review专家的见闻&#xff0c;希望能够借助本次会见的内容纪要分享&#xff0c;给广大出海的iOS开发者提供一些有价值的资讯信息&#xff0c;帮助大家都能够轻松应对App的每一次审核。 近期&#xff0c;小编收到了来自苹果设计开发加速器的邀请…

园区无线网新架构:无CAPWAP的集中式转发

1、从经典的APAC组网说起 谈及园区无线网&#xff0c;大家脑子里不免会蹦出同一个关键词。 没错&#xff0c;市面上常见的中大型企业/园区的无线网络组网方案&#xff0c;大多都是基于集中式网关转发的”APAC”模式。 顾名思义&#xff0c;该架构包括 AP 和AC两个关键角色。 …

力扣每日一题 6/12 + 随机一题

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 2806.取整够买后的账户余额【简单】 题目&#xff1a; 一开始&#xff0c;你…

脾虚,人就废了一半!脾虚分3种,分清是哪一种,才能对症补脾!

入夏养什么&#xff1f;除心之外&#xff0c;还要多养养脾胃&#xff01;因为夏季暑热潮湿&#xff0c;加上天气变热后&#xff0c;大家喜欢吃冰的食物&#xff01;“喜燥恶湿”的脾胃在夏季就很容易受伤&#xff0c;导致脾虚&#xff01; 中医认为&#xff0c;脾主运化&#x…

ArcGIS Pro 3.0加载在线高德地图

1、打开ArcGIS Online官网&#xff0c;登录自己的账号&#xff0c;登录后效果如下图所示 官网地址&#xff1a;https://www.arcgis.com/home/webmap/viewer.html 2、点击Add&#xff0c;选择Add Layer from Web&#xff0c;如下图所示 3、在显示的Add Layer from Web页面内&am…

GA/T 1400 (非标)视图库网关

GA/T 1400 &#xff08;非标&#xff09;视图库网关 应用概述&#xff1a; GAT1400视图库网关产品是公司“分布式综合安防管理平台”下的子系统 针对以下遇到应用场景定制开发、优化后形成的网关产品&#xff0c;具备兼容性高、可扩展、可功能定制、可OEM等优点。 视图库网关…

python中魔术方法__str__与__repr__的区别

在Python中&#xff0c;__str__和__repr__是两个常见的魔法方法&#xff08;也称为双下方法或dunder方法&#xff09;&#xff0c;它们用于定义对象的字符串表示形式。它们的主要区别在于它们的用途和使用场景。 __str__ 用途&#xff1a;__str__方法用于为用户提供一个易读的…

适合营销的叙事可视化

背景 数据可视化与数据故事化的差异和相似点&#xff0c;以及它们如何协同工作&#xff0c;将你的数据转化为清晰、简洁、可操作的信息&#xff0c;以便您的组织使用。 什么是数据可视化&#xff1f; 数据可视化通过图像传达信息——这是你所收集数据的视觉表示。通过提供原…

可以自定义的文字识别OCR

可以自定义的文字识别OCR 什么是OCR文档自学习自定义模板单证票据信息抽取操作体验 这里提到的可以自定义的文字识别OCR &#xff0c;其实就是OCR文档自学习。 什么是OCR文档自学习 什么是OCR文档自学习呢&#xff1f;OCR文档自学习&#xff0c;是面向“无算法基础”的企业与个…

【外汇天眼】交易智慧:遵循趋势,稳中求胜

在交易中&#xff0c;新手往往因对未来走势的不确定性感到恐惧&#xff0c;从而不断要求对市场进行全面分析。这种需求反映了他们在投机心理幼稚期缺乏安全感的表现。有些勤奋的交易者甚至在做单前、持仓时和寻找出局理由时都在不断分析行情。然而&#xff0c;这种过度分析真的…

经典的带环链表问题(链表补充)

环形链表1 运用快慢指针的方法&#xff0c;fast ,slow从头节点出发&#xff0c;快指针走两步&#xff0c;慢指针走一步&#xff0c;若有环&#xff0c;快指针先进环&#xff0c;后续如果慢指针和快指针相遇&#xff0c;则链表带环。转换成了追击问题。 struct ListNode {int v…

第二证券股市资讯:半导体,突发!

半导体又现突发&#xff01; 商场忽然传出&#xff0c;拜登政府正在考虑约束我国获取应用在人工智能&#xff08;AI) 芯片上的全栅级晶体管技能&#xff08;Gate-all-around, GAA) &#xff0c;但不过现在还不清楚美国官员何时会做出最终决议。从趋势来看&#xff0c;这意味着…

高温预警,快收下这份机房运维攻略

高温预警 华东区即将迎来最强高温&#xff0c;根据历史经验&#xff0c;数据机房在夏季高温环境导致设备温度过高&#xff0c;宕机事件明显增加&#xff0c;为保障系统健康稳定运行&#xff0c;需要针对数据机房空调、设备的运行状态及环境进行检查&#xff0c;并同时期开展防尘…

八股文系列Spark

为什么Spark 比 MapReduce 更快 DAG相比hadoop的mapreduce在大多数情况下可以减少磁盘I/O次数 因为mapreduce计算模型只能包含一个map和一个reduce,所以reduce完后必须进行落盘&#xff0c;而DAG可以连续shuffle的&#xff0c;也就是说一个DAG可以完成好几个mapreduce&#xf…