Unity3D仿星露谷物语开发48之表现树桩结果

打印 上一主题 下一主题

主题 1875|帖子 1875|积分 5625

1、目标

砍完橡树之后会露出树桩,然后树桩可以用斧头收割,并将创建一个新的砍树桩的粒子结果。
这里有:一种作物收获后创造另一种作物的逻辑。
2、分析

在SO_CropDetailsList中,Harvested Transform Item Code可以指定收获后天生的另一种东西。

在之前的实现逻辑中,当作物收获之后就会destroy,并不会另一种作物。
3、修改Crop.cs脚本

修改HarvestActions函数,添加红色方框中的内容:

  1. private void HarvestActions(CropDetails cropDetails, GridPropertyDetails gridPropertyDetails)
  2. {
  3.     SpawnHarvestedItems(cropDetails);
  4.     // Does this crop transform into another crop
  5.     if(cropDetails.harvestedTransformItemCode > 0)
  6.     {
  7.         CreateHarvestedTransformCrop(cropDetails, gridPropertyDetails);
  8.     }
  9.     Destroy(gameObject);  // destory当前Crop类所挂载的实例
  10. }
复制代码
新增CreateHarvestedTransformCrop函数:
  1. private void CreateHarvestedTransformCrop(CropDetails cropDetails, GridPropertyDetails gridPropertyDetails)
  2. {
  3.     // Update crop in grid properties
  4.     gridPropertyDetails.seedItemCode = cropDetails.harvestedTransformItemCode;
  5.     gridPropertyDetails.growthDays = 0;
  6.     gridPropertyDetails.daysSinceLastHarvest = -1;
  7.     gridPropertyDetails.daysSinceWatered = -1;
  8.     GridPropertiesManager.Instance.SetGridPropertyDetails(gridPropertyDetails.gridX, gridPropertyDetails.gridY, gridPropertyDetails);
  9.     // Display planted crop
  10.     GridPropertiesManager.Instance.DisplayPlantedCrop(gridPropertyDetails);
  11. }
复制代码
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脚本/设置


  1. [SerializeField] private GameObject choppingTreeTrunkPrefab = null;
复制代码


  1. case HarvestActionEffect.choppingTreeTrunk:
  2.      GameObject choppingTreeTrunk = PoolManager.Instance.ReuseObject(choppingTreeTrunkPrefab, effectPosition, Quaternion.identity);
  3.      choppingTreeTrunk.SetActive(true);
  4.      StartCoroutine(DisableHarvestActionEffect(choppingTreeTrunk, twoSeconds));
  5.      break;
复制代码
代码完成后,设置参数信息:

10、运行游戏2




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表