Unity3D仿星露谷物语开发47之砍树时落叶特效
1、目标
当橡树被砍伐时的落叶粒子效果。
2、创建粒子物体
Hierarchy -> PersistentScene下创建新物体命名为DeciduousLeavesFalling。
添加Particle System组件。
基础配置如下:(暂时勾选Looping实时可以看生成效果,后面反选即可)
配置Emission和Shape信息如下:
配置Color over Lifetime:
配置Size over Lifetime / Rotation over Lifetime / Noise 信息如下:
配置Texture / Renderer 信息如下:
将DeciduousLeavesFalling移到Assets -> Prefabs -> Crop -> Effect下
3、修改Crop.cs脚本
[Tooltip("This should be populated from child transform gameobject showing harvest effect spawn point")]
[SerializeField] private Transform harvestActionEffectTransform = null;
在ProcessToolAction函数中添加:
完整代码为:
public void ProcessToolAction(ItemDetails equippedItemDetails, bool isToolRight, bool isToolLeft, bool isToolDown, bool isToolUp)
{// Get grid property detailsGridPropertyDetails gridPropertyDetails = GridPropertiesManager.Instance.GetGridPropertyDetails(cropGridPosition.x, cropGridPosition.y);if (gridPropertyDetails == null)return;// Get seed item detailsItemDetails seedItemDetails = InventoryManager.Instance.GetItemDetails(gridPropertyDetails.seedItemCode);if(seedItemDetails == null) return;// Get crop detailsCropDetails cropDetails = GridPropertiesManager.Instance.GetCropDetails(seedItemDetails.itemCode);if (cropDetails == null) return;// Get animator for crop if presentAnimator animator = GetComponentInChildren<Animator>();// Trigger tool animationif(animator != null){if(isToolRight || isToolUp){animator.SetTrigger("usetoolright");}else if(isToolLeft || isToolDown){animator.SetTrigger("usetoolleft");}}// Trigger tool particle effect on cropif (cropDetails.isHarvestActionEffect){EventHandler.CallHarvestActionEffectEvent(harvestActionEffectTransform.position, cropDetails.harvestActionEffect);}// Get required harvest actions for tool(收获此农作物所需的操作次数)int requiredHarvestActions = cropDetails.RequiredHarvestActionsForTool(equippedItemDetails.itemCode);if (requiredHarvestActions == -1) return;// Increment harvest action countharvestActionCount++;// Check if required harvest actions madeif (harvestActionCount >= requiredHarvestActions)HarvestCrop(isToolRight, isToolUp, cropDetails, gridPropertyDetails, animator);}
4、修改CropTreeCanyonOak预设体
在CropSprite下新增一个物体命名为LeavesSpawnPoint,这个作为特效的参考点,修改其Position(Y)为4。
接着点击CropTreeCanyonOak进行变量赋值。
5、修改PoolManager对象
6、修改VFXManager.cs脚本及配置
添加定义:
[SerializeField] private GameObject deciduousLeavesFallingPrefab = null;
在displayHarvestActionEffect中添加case信息如下:
case HarvestActionEffect.deciduousLeavesFalling:GameObject deciduousLeavesFalling = PoolManager.Instance.ReuseObject(deciduousLeavesFallingPrefab, effectPosition, Quaternion.identity);deciduousLeavesFalling.SetActive(true);StartCoroutine(DisableHarvestActionEffect(deciduousLeavesFalling, twoSeconds));break;
完整的代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class VFXManager : SingletonMonobehaviour<VFXManager>
{private WaitForSeconds twoSeconds;[SerializeField] private GameObject reapingPrefab = null;[SerializeField] private GameObject deciduousLeavesFallingPrefab = null;protected override void Awake(){base.Awake();twoSeconds = new WaitForSeconds(2f);}private void OnDisable(){EventHandler.HarvestActionEffectEvent -= displayHarvestActionEffect;}private void OnEnable(){EventHandler.HarvestActionEffectEvent += displayHarvestActionEffect;}private IEnumerator DisableHarvestActionEffect(GameObject effectGameObject, WaitForSeconds secondsToWait){yield return secondsToWait;effectGameObject.SetActive(false);}private void displayHarvestActionEffect(Vector3 effectPosition, HarvestActionEffect harvestActionEffect){switch(harvestActionEffect){case HarvestActionEffect.deciduousLeavesFalling:GameObject deciduousLeavesFalling = PoolManager.Instance.ReuseObject(deciduousLeavesFallingPrefab, effectPosition, Quaternion.identity);deciduousLeavesFalling.SetActive(true);StartCoroutine(DisableHarvestActionEffect(deciduousLeavesFalling, twoSeconds));break;case HarvestActionEffect.reaping:GameObject reaping = PoolManager.Instance.ReuseObject(reapingPrefab, effectPosition, Quaternion.identity);reaping.SetActive(true); StartCoroutine(DisableHarvestActionEffect(reaping, twoSeconds));break;case HarvestActionEffect.none:break;default:break;}}
}
配置VFXManager的信息如下:
7、运行游戏
相关文章:

Unity3D仿星露谷物语开发47之砍树时落叶特效
1、目标 当橡树被砍伐时的落叶粒子效果。 2、创建粒子物体 Hierarchy -> PersistentScene下创建新物体命名为DeciduousLeavesFalling。 添加Particle System组件。 基础配置如下:(暂时勾选Looping实时可以看生成效果,后面反选即可&am…...

第十节第六部分:常见API:DateTimeFormatter、Period、Duration
DateTimeFormatter类常用方法 Period类常用方法 Duration类常用方法 总结 代码: 代码一:DateTimeFormatter类常用方法 package com.itheima.jdk8_time;import java.time.LocalDateTime; import java.time.format.DateTimeFormatter;public class DateT…...

如何在VSCode中更换默认浏览器:完整指南
引言 作为前端开发者,我们经常需要在VSCode中快速预览HTML文件。默认情况下,VSCode会使用系统默认浏览器打开文件,但有时我们可能需要切换到其他浏览器进行测试。本文将详细介绍如何在VSCode中更换默认浏览器。 方法一:使用VSCo…...
B2160 病人排队
题目描述 编写一个程序,将登记的病人按照以下原则排出看病的先后顺序: 老年人(年龄 ≥60 岁)比非老年人优先看病。老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序。非老年人按登记的先后顺序看病。输入格式 第 1 行,输入一个小于 100 的正整数,表示病人…...

【机器人】复现 3D-Mem 具身探索和推理 | 3D场景记忆 CVPR 2025
3D-Mem 是用于具体探索和推理的3D场景记忆,来自CVPR 2025. 本文分享3D-Mem复现和模型推理的过程~ 下面是一个推理和选择识别的结果: 看一下机器人探索的效果: 下面是真实环境下,官方跑的demo,3D-Mem无需训…...

鸿蒙进阶——CMakelist、GN语法简介及三方库通用移植指南
文章大纲 引言一、GN常用的内置变量二、GN常用的内置函数三、CMake 重要语法1、生成动态库2、生成静态库3、生成OBJECT 库4、重要的函数和模块4.1、add_definitions4.2、execute_process4.3、add_dependencies4.4、install4.5、FetchContent 四、GN 重要语法1、编译Target2、预…...

CSS-5.1 Transition 过渡
本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。 HTML系列文章 已经收录在前端专栏,有需要的宝宝们可以点击前端专栏查看! 点…...
TTS:VITS-fast-fine-tuning 快速微调 VITS
1,项目概述 VITS是一种语音合成的方法,是一个完全端到端的TTS 模型,它使用预先训练好的语音编码器将文本转化为语音,并且是直接从文本到语音波形的转换,无需额外的中间步骤或特征提取。 VITS的工作流程为:…...

从虚拟仿真到行业实训再到具身智能--华清远见嵌入式物联网人工智能全链路教学方案
2025年5月23-25日,第63届中国高等教育博览会(高博会)将在长春中铁东北亚国际博览中心举办。作为国内高等教育领域规模大、影响力广的综合性展会,高博会始终聚焦教育科技前沿,吸引全国高校管理者、一线教师、教育科技企…...

告别手动绘图!2分钟用 AI 生成波士顿矩阵
波士顿矩阵作为经典工具,始终是企业定位产品组合、制定竞争策略的核心方法论。然而,传统手动绘制矩阵的方式,往往面临数据处理繁琐、图表调整耗时、团队协作低效等痛点。 随着AI技术的发展,这一现状正在被彻底改变。boardmix博思白…...

GraphPad Prism工作表的管理
《2025新书现货 GraphPad Prism图表可视化与统计数据分析(视频教学版)雍杨 康巧昆 清华大学出版社教材书籍 9787302686460 GraphPadPrism图表可视化 无规格》【摘要 书评 试读】- 京东图书 GraphPad Prism统计数据分析_夏天又到了的博客-CSDN博客 工作…...

UE 材质几个输出向量节点
PixelNormalWS...
【modelscope/huggingface 通过colab将huggingface 模型/数据集/空间转移到 modelscope并下载】
1. 准备 注册一个modelscope账号(国内的)拿到对应的访问令牌SDK/API令牌注册一个google账号, 登录colab 2. 开始干! 打开一个ipynb 安装依赖包 !pip install -qqq modelscope huggingface-hub -U选择安装git lfs !curl -s https://packag…...

告别静态UI!Guineration用AI打造用户专属动态界面
摘 要 作为智能原生操作系统 DingOS 的核心技术之一,Guineration 生成式 UI 体系深刻践行了 DingOS“服务定义软件”的核心理念。DingOS 以“一切皆服务、服务按需而取、按用付费”为设计宗旨,致力于通过智能原生能力与粒子服务架构,实现资源…...

第六届电子通讯与人工智能国际学术会议(ICECAI 2025)
在数字化浪潮中,电子通讯与人工智能的融合正悄然重塑世界的运行逻辑。技术基础的共生关系是这场变革的核心——电子通讯如同“信息高速公路”,通过5G等高速传输技术,将海量数据实时输送至AI系统,使其能够像人类神经系统般快速响应…...
【C/C++】C++并发编程:std::async与std::thread深度对比
文章目录 C并发编程:std::async与std::thread深度对比1 核心设计目的以及区别2 详细对比分析3 代码对比示例4 适用场景建议5 总结 C并发编程:std::async与std::thread深度对比 在 C 中,std::async 和 std::thread 都是用于并发编程的工具&am…...
每日算法刷题Day11 5.20:leetcode不定长滑动窗口求最长/最大6道题,结束不定长滑动窗口求最长/最大,用时1h20min
6. 1695.删除子数组的最大得分(中等) 1695. 删除子数组的最大得分 - 力扣(LeetCode) 思想 1.给你一个正整数数组 nums ,请你从中删除一个含有 若干不同元素 的子数组**。**删除子数组的 得分 就是子数组各元素之 和 。 返回 只删除一个 子…...
STL中的Vector(顺序表)
vector容器的基本用法: template<class T> class vector { T* _a; size_t size; size_t capacity; } 尾插和遍历: vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3);//遍历 for(int i0;i<v.size();i) {cout<<…...
iOS Runtime与RunLoop的对比和使用
Runtime 机制 核心概念 Objective-C 的动态特性:Objective-C 是一门动态语言,很多工作都是在运行时而非编译时决定的消息传递机制:方法调用实际上是发送消息 objc_msgSend(receiver, selector, ...)方法决议机制:动态方法解析、…...

解决vscode在任务栏显示白色图标
长久不用,不知道怎么着就显示成白色图标,虽然不影响使用,但是看起来不爽 问了豆包,给了个解决方法: 1、打开隐藏文件, 由于图标缓存文件是隐藏文件,首先点击资源管理器中的 “查看” 菜单&am…...

架构思维:构建高并发扣减服务_分布式无主架构
文章目录 Pre无主架构的任务简单实现分布式无主架构 设计和实现扣减中的返还什么是扣减的返还返还实现原则原则一:扣减完成才能返还原则二:一次扣减可以多次返还原则三:返还的总数量要小于等于原始扣减的数量原则四:返还要保证幂等…...
Vue 3 官方 Hooks 的用法与实现原理
Vue 3 引入了 Composition API,使得生命周期钩子(hooks)在函数式风格中更清晰地表达。本篇文章将从官方 hooks 的使用、实现原理以及自定义 hooks 的结构化思路出发,全面理解 Vue 3 的 hooks 系统。 📘 1. Vue 3 官方生…...
Vue3 打印表格、Element Plus 打印、前端打印、表格导出打印、打印插件封装、JavaScript 打印、打印预览
🚀 Vue3 高级表格打印工具封装(支持预览、分页、样式美化) 现已更新至npm # npm npm install vue-table-print# yarn yarn add vue-table-print# pnpm pnpm add vue-table-printgithunb地址: https://github.com/zhoulongshao/vue-table-print/blob/main/README.MD关键词…...
湖北理元理律师事务所:专业债务优化如何助力负债者重获生活掌控权
在当前经济环境下,个人债务问题日益凸显。湖北理元理律师事务所通过其专业的债务优化服务,为负债群体提供了一条合法合规的解决路径。本文将客观分析专业债务规划的实际价值,不涉及任何营销内容。 一、债务优化的核心价值 科学评估…...
RAGFlow知识检索原理解析:混合检索架构与工程实践
一、核心架构设计 RAGFlow构建了四阶段处理流水线,其检索系统采用双路召回+重排序的混合架构: S c o r e f i n a l = α ⋅ B M...
5月22总结
P1024 [NOIP 2001 提高组] 一元三次方程求解 题目描述 有形如:$ a x^3 b x^2 c x d 0 $ 这样的一个一元三次方程。给出该方程中各项的系数($ a,b,c,d $ 均为实数),并约定该方程存在三个不同实根(根的范围在 $ -1…...
Java设计模式之桥接模式:从入门到精通
1. 桥接模式概述 1.1 定义与核心思想 桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立变化。这种模式通过提供桥梁结构(Bridge)将抽象和实现解耦。 专业定义:桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化…...

uni-app学习笔记九-vue3 v-for指令
v-for 指令基于一个数组来渲染一个列表。v-for 指令的值需要使用 item in items 形式的特殊语法,其中 items 是源数据的数组,而 item 是迭代项的别名: <template><view v-for"(item,index) in 10" :key"index"…...

MAC电脑中右键后复制和拷贝的区别
在Mac电脑中,右键菜单中的“复制”和“拷贝”操作在功能上有所不同: 复制 功能:在选定的位置创建一个与原始文件相同的副本。快捷键:CommandD用于在当前位置快速复制文件,CommandC用于将内容复制到剪贴板。效果&…...
Regmap子系统之六轴传感器驱动-编写icm20607.c驱动
(一)在驱动中要操作很多芯片相关的寄存器,所以需要先新建一个icm20607.h的头文件,用来定义相关寄存器值。 #ifndef ICM20607_H #define ICM20607_H /*************************************************************** 文件名 : i…...