当前位置: 首页 > article >正文

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

http://www.lryc.cn/news/2385774.html

相关文章:

  • [Datagear] 实现按月颗粒度选择日期的方案
  • 漏洞检测与渗透检验在功能及范围上究竟有何显著差异?
  • DB-GPT扩展自定义Agent配置说明
  • 基于SamOutV8的序列生成模型实现与分析
  • 家政维修平台实战09:推送数据到多维表格
  • 前端框架token相关bug,前后端本地联调
  • PyQt学习系列05-图形渲染与OpenGL集成
  • 卷积神经网络(CNN)可视化技术详解:从特征学到演化分析
  • 第十天的尝试
  • WHAT - 兆比特每秒 vs 兆字节每秒
  • 业务场景中使用 SQL 实现快速数据更新与插入
  • QT之INI、JSON、XML处理
  • 微信小程序调用蓝牙API “wx.writeBLECharacteristicValue()“ 报 errCode: 10008 的解决方案
  • 【Java基础笔记vlog】Java中常见的几种数组排序算法汇总详解
  • WebRTC与RTSP|RTMP的技术对比:低延迟与稳定性如何决定音视频直播的未来
  • spring cloud alibaba Sentinel详解
  • Kafka + Flink + Spark 构建实时数仓全链路实战
  • React19源码系列之渲染阶段performUnitOfWork
  • Redis中的事务和原子性
  • 怎样把B站的视频保存到本地
  • Vue3前后端分离用户信息显示方案
  • DL00987-基于深度学习YOLOv11的红外鸟类目标检测含完整数据集
  • 黑马程序员C++2024新版笔记 第4章 函数和结构体
  • 数据仓库,扫描量
  • Day126 | 灵神 | 二叉树 | 层数最深的叶子结点的和
  • Python实例题:人机对战初体验Python基于Pygame实现四子棋游戏
  • Vue3性能优化: 大规模列表渲染解决方案
  • 笔记:将一个文件服务器上的文件(一个返回文件数据的url)作为另一个http接口的请求参数
  • 【RocketMQ 生产者和消费者】- 生产者启动源码 - MQClientInstance 定时任务(4)
  • 超全GPT-4o 风格提示词案例,持续更新中,附使用方式