Unity3D仿星露谷物语开发48之显示树桩效果
1、目标
砍完橡树之后会露出树桩,然后树桩可以用斧头收割,并将创建一个新的砍树桩的粒子效果。
这里有:一种作物收获后创造另一种作物的逻辑。
2、分析
在SO_CropDetailsList中,Harvested Transform Item Code可以指定收获后生成的另一种东西。
在之前的实现逻辑中,当作物收获之后就会destroy,并不会另一种作物。
3、修改Crop.cs脚本
修改HarvestActions函数,添加红色方框中的内容:
private void HarvestActions(CropDetails cropDetails, GridPropertyDetails gridPropertyDetails)
{SpawnHarvestedItems(cropDetails);// Does this crop transform into another cropif(cropDetails.harvestedTransformItemCode > 0){CreateHarvestedTransformCrop(cropDetails, gridPropertyDetails);}Destroy(gameObject); // destory当前Crop类所挂载的实例
}
新增CreateHarvestedTransformCrop函数:
private void CreateHarvestedTransformCrop(CropDetails cropDetails, GridPropertyDetails gridPropertyDetails)
{// Update crop in grid propertiesgridPropertyDetails.seedItemCode = cropDetails.harvestedTransformItemCode;gridPropertyDetails.growthDays = 0;gridPropertyDetails.daysSinceLastHarvest = -1;gridPropertyDetails.daysSinceWatered = -1;GridPropertiesManager.Instance.SetGridPropertyDetails(gridPropertyDetails.gridX, gridPropertyDetails.gridY, gridPropertyDetails);// Display planted cropGridPropertiesManager.Instance.DisplayPlantedCrop(gridPropertyDetails);
}
4、创建CropTreeTrunkCanyonOak预设体
在Hierarchy -> PersistentScene下新建物体命名为CropTreeTrunkCanyonOak。
给该物体添加Crop组件。
在其下添加子物体命名为CropSprite,给该物体添加3个组件:Sorting Group/Sprite Renderer/Animator,对应的配置信息如下:
双击Animator组件 -> Controller的TreeTrunk。
将第2个节点名称修改为TreeTrunkVanishingRight。
给CropSprite添加子物体命名为:Trunk,给其添加组件信息如下:
给CropSprite添加子物体命名为:WoodChippingsSpawnPoint,这个是粒子特效的定位点。给其添加组件信息如下:
点击CropTreeTrunkCanyonOak,设置其配置信息:
然后将其拖入到Assets -> Prefabs下:
点击预制体,选择CropSprite(因为它挂载了Animator组件),在Animation界面可以预览特效。
5、修改So_CropDetailsList配置
将CropDetails的数量从2修改为3,具体的配置信息如下:
6、第1次运行游戏
砍伐橡木后会产生树桩,继续砍树桩直到从坑位中消失。
现在我们需要在砍树桩时也产生粒子特效。
7、创建ChoppingTreeTrunk预设体
在Hierarchy -> PersistentScene下新建物体命名为ChoppingTreeTrunk。
添加Particle System组件,配置信息如下:
查看粒子特效:
将该预设体放到Assets -> Prefabs -> Cop -> Effects下,然后删除掉Hierarchy中的。
8、修改PoolManager对象的配置
9、修改VFXManager.cs脚本/配置
[SerializeField] private GameObject choppingTreeTrunkPrefab = null;
case HarvestActionEffect.choppingTreeTrunk:GameObject choppingTreeTrunk = PoolManager.Instance.ReuseObject(choppingTreeTrunkPrefab, effectPosition, Quaternion.identity);choppingTreeTrunk.SetActive(true);StartCoroutine(DisableHarvestActionEffect(choppingTreeTrunk, twoSeconds));break;
代码完成后,配置参数信息:
10、运行游戏2
相关文章:

Unity3D仿星露谷物语开发48之显示树桩效果
1、目标 砍完橡树之后会露出树桩,然后树桩可以用斧头收割,并将创建一个新的砍树桩的粒子效果。 这里有:一种作物收获后创造另一种作物的逻辑。 2、分析 在SO_CropDetailsList中,Harvested Transform Item Code可以指定收获后生…...

[Datagear] 实现按月颗粒度选择日期的方案
在使用 Datagear 构建数据分析报表时,常常会遇到一个问题:如果数据的目标颗粒度是“月”,默认的日期控件却是精确到“日”的,这在用户交互和数据处理层面会带来不必要的复杂度。本文将分享两种解决方案,帮助你更好地控制日期控件的颗粒度,实现以月为单位的日期筛选功能。…...

漏洞检测与渗透检验在功能及范围上究竟有何显著差异?
漏洞检测与渗透检验是确保系统安全的重要途径,这两种方法各具特色和功效,它们在功能上有着显著的差异。 目的不同 漏洞扫描的主要任务是揭示系统内已知的安全漏洞和隐患,这就像是对系统进行一次全面的健康检查,看是否有已知的疾…...

DB-GPT扩展自定义Agent配置说明
简介 文章主要介绍了如何扩展一个自定义Agent,这里是用官方提供的总结摘要的Agent做了个示例,先给大家看下显示效果 代码目录 博主将代码放在core目录了,后续经过对源码的解读感觉放在dbgpt_serve.agent.agents.expand目录下可能更合适&…...
基于SamOutV8的序列生成模型实现与分析
项目概述 本项目实现了基于SamOutV8架构的序列生成模型,核心组件包括MaxStateSuper、FeedForward和DecoderLayer等模块。通过结合自注意力机制与状态编码策略,该模型在处理长序列时表现出良好的性能。 核心组件解析 1. MaxStateSuper(状态编…...

家政维修平台实战09:推送数据到多维表格
目录 1 API调试2 创建云函数3 前端调用整体效果总结 上一篇我们搭建了服务分类的后台功能,对于分类的图标通过集成TOS拿到了可以公开访问的地址,本篇我们将写入的数据推送至多维表格中。 1 API调试 要想推送多维表格的数据,首先要利用官方的…...

前端框架token相关bug,前后端本地联调
今天我搭建框架的时候,我想请求我自己的本地!然后我自己想链接我自己的本地后端,我之前用的前端项目,都是链别人的后端,基本上很少情况会链接自己的后端!所以我当时想的是,我前后端接口一样&…...
PyQt学习系列05-图形渲染与OpenGL集成
PyQt学习系列笔记(Python Qt框架) 第五课:PyQt的图形渲染与OpenGL集成 一、图形渲染概述 1.1 为什么需要图形渲染? PyQt默认基于2D绘图(QPainter),但某些场景需要高性能3D图形或复杂视觉效果…...

卷积神经网络(CNN)可视化技术详解:从特征学到演化分析
在深度学习领域,卷积神经网络(CNN)常被称为“黑箱”,其内部特征提取过程难以直接观测。而 可视化技术 是打开这一“黑箱”的关键工具,通过可视化可直观了解网络各层学到了什么、训练过程中如何演化,以及模型…...
第十天的尝试
目录 一、每日一言 二、练习题 三、效果展示 四、下次题目 五、总结 一、每日一言 哈哈,十天缺了两天,我写的文章现在质量不高,所以我可能考虑,应该一星期或者三四天出点高质量的文章,同时很开心大家能够学到知识&a…...
WHAT - 兆比特每秒 vs 兆字节每秒
文章目录 Mbps 解释Mbps 和 MB/s(兆字节每秒)换算总结网络场景1. 在路由器设置中的 Mbps2. 在游戏下载时的 Mbps / MB/s总结 Mbps 解释 首先,Mbps 是一个常见的网络带宽单位,意思是: Megabits per second(…...
业务场景中使用 SQL 实现快速数据更新与插入
一、业务背景 在气象数据处理系统中,我们经常需要对分钟级的降水数据进行更新和插入操作。具体场景如下: • 数据源会定期发送分钟级的降水数据,包括降水值(PRECA)和质控码(PRECA_QC2)。 • …...

QT之INI、JSON、XML处理
文章目录 INI文件处理写配置文件读配置文件 JSON 文件处理写入JSON读取JSON XML文件处理写XML文件读XML文件 INI文件处理 首先得引入QSettings QSettings 是用来存储和读取应用程序设置的一个类 #include "wrinifile.h"#include <QSettings> #include <QtD…...

微信小程序调用蓝牙API “wx.writeBLECharacteristicValue()“ 报 errCode: 10008 的解决方案
1、问题现象 问题:在开发微信小程序蓝牙通信功能时,常常会遇到莫名其妙的错误,查阅官方文档可能也无法找到答案。如在写入蓝牙数据时,报了这样的错误: {errno: 1500104, errCode: 10008, errMsg: "writeBLECharacteristicValue:fail:system error, status: UNKNOW…...

【Java基础笔记vlog】Java中常见的几种数组排序算法汇总详解
Java中常见的几种排序算法: 冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)…...

WebRTC与RTSP|RTMP的技术对比:低延迟与稳定性如何决定音视频直播的未来
引言 音视频直播技术已经深刻影响了我们的生活方式,尤其是在教育、医疗、安防、娱乐等行业中,音视频技术成为了行业发展的重要推动力。近年来,WebRTC作为一种开源的实时通信技术,成为了音视频领域的重要选择,它使得浏览…...

spring cloud alibaba Sentinel详解
spring cloud alibaba Sentinel详解 spring cloud alibaba Sentinel介绍 Sentinel 是阿里巴巴开源的一款动态流量控制组件,主要用于保障微服务架构中的服务稳定性。它能够对微服务中的各种资源(如接口、服务方法等)进行实时监控、流量控制、…...
Kafka + Flink + Spark 构建实时数仓全链路实战
本文聚焦如何通过 Kafka + Flink + Spark 构建一套稳定、可扩展、可插拔的实时数仓体系。覆盖从数据接入、实时清洗、指标计算,到离线补数、数据一致性保障的完整链路设计,结合实践样例提供可复制的落地方法。 🧱 一、架构总览 ┌────────────┐│ 数据源 …...

React19源码系列之渲染阶段performUnitOfWork
在 React 内部实现中,将 render 函数分为两个阶段: 渲染阶段提交阶段 其中渲染阶段可以分为 beginWork 和 completeWork 两个阶段,而提交阶段对应着 commitWork。 在之前的root.render过程中,渲染过程无论是并发模式执行还是同…...
Redis中的事务和原子性
在 Redis 中,事务 和 原子性 是两个关键概念,用于保证多个操作的一致性和可靠性。以下是 Redisson 和 Spring Data Redis 在处理原子性操作时的区别与对比: 1. Redis 的原子性机制 Redis 本身通过以下方式保证原子性: 单线程模型…...
怎样把B站的视频保存到本地
在B站(哔哩哔哩)上,有数不清的优质内容,无论是搞笑视频、学习资料,还是动漫影视,总有一些视频让你想反复观看。但是,遇到没有网络或流量不够用的时候,怎么办?把B站的视频…...
Vue3前后端分离用户信息显示方案
在Vue3前后端分离的项目中,若后端仅返回用户ID,可通过以下步骤显示用户名: 解决方案 获取用户信息API 确保后端提供以下任意一种接口: 批量查询接口:传入多个用户ID,返回对应的用户信息列表 单个查询接口…...

DL00987-基于深度学习YOLOv11的红外鸟类目标检测含完整数据集
提升科研能力,精准识别红外鸟类目标! 完整代码数据集见文末 针对科研人员,尤其是研究生们,是否在鸟类目标检测中遇到过数据不够精准、处理困难等问题?现在,我们为你提供一款基于深度学习YOLOv11的红外鸟类…...

黑马程序员C++2024新版笔记 第4章 函数和结构体
1.结构体的基本应用 结构体struct是一种用户自定义的复合数据类型,可以包含不同类型的成员。例如: struct Studet {string name;int age;string gender; } 结构体的声明定义和使用的基本语法: struct 结构体类型 {成员1类型 成员1名称;成…...

数据仓库,扫描量
有五种通用技术用于限制数据的扫描量,正如图3 - 4所示。第一种技术是扫描那些被打上时戳的数据。当一个应用对记录的最近一次变化或更改打上时戳时,数据仓库扫描就能够很有效地进行,因为日期不相符的数据就接触不到了。然而,目前的…...
Day126 | 灵神 | 二叉树 | 层数最深的叶子结点的和
Day126 | 灵神 | 二叉树 | 层数最深的叶子结点的和 1302.层数最深的叶子结点的和 1302. 层数最深叶子节点的和 - 力扣(LeetCode) 思路: 这道题用层序遍历的思路比较好想,就把每层的都算一下,然后返回最后一层的和就…...
Python实例题:人机对战初体验Python基于Pygame实现四子棋游戏
目录 Python实例题 题目 代码实现 实现原理 游戏逻辑: AI 算法: 界面渲染: 关键代码解析 游戏棋盘渲染 AI 决策算法 胜利条件检查 使用说明 安装依赖: 运行游戏: 游戏操作: 扩展建议 增强…...

Vue3性能优化: 大规模列表渲染解决方案
# Vue3性能优化: 大规模列表渲染解决方案 一、背景与挑战 背景 在大规模应用中,Vue3的列表渲染性能一直是开发者关注的焦点。大规模列表渲染往往会导致卡顿、内存占用过高等问题,影响用户体验和系统整体性能。 挑战 渲染大规模列表时,DOM操作…...
笔记:将一个文件服务器上的文件(一个返回文件数据的url)作为另一个http接口的请求参数
笔记:将一个文件服务器上的文件(一个返回文件数据的url)作为另一个http接口的请求参数 最近有这么个需求,需要往某一个业务的外部接口上传文件信息,但是现在没有现成的文件,只在数据库存了对应的url&#…...

【RocketMQ 生产者和消费者】- 生产者启动源码 - MQClientInstance 定时任务(4)
文章目录 1. 前言2. startScheduledTask 启动定时任务2.1 fetchNameServerAddr 拉取名称服务地址2.2 updateTopicRouteInfoFromNameServer 更新 topic 路由信息2.2.1 topic 路由信息2.2.2 updateTopicRouteInfoFromNameServer 获取 topic2.2.3 updateTopicRouteInfoFromNameSer…...