Unity3D仿星露谷物语开发49之创建云杉树
1、目标
创建一颗既可以生长又可以砍伐的云杉树,这个和之前创建橡树类似。
2、创建云杉树预制体
创建新物体命名为CropTreeBlueSpruce,并且添加Box Collider 2D和Crop组件。
在CropTreeBlueSpruce下创建子物体命名为CropSprite,添加3个组件如下:
在CropSprite下添加子物体命名为Trunk,添加3个组件如下:
在CropSprite下添加子物体命名为Top,添加2个组件如下:
在CropSprite下添加子物体命名为FallingNeedlesSpawnPoint,设置Transform属性:
设置CropTreeBlueSpruce的Crop属性:
将预制体移到Assets -> Prefabs -> Crop下,并且删除Hierarchy下的物体。
3、SO_CropDetailsList添加云杉
修改Crop Details从3到4,配置信息如下:
4、创建云杉树桩预制体
在Assets -> Prefabs -> Crop下,复制CropTreeTrunkCanyonOak预制体后重命名为CropTreeTrunkBlueSpruce。
点击CropTreeTrunkBlueSpruce查看,不需要做任何改变。
点击CropSprite查看,不需要做任何改变。
点击Trunk,修改Sprite信息,其他保持不变。
点击WoodChippingsSpawnPoint查看,保持不变。
5、SO_CropDetailsList添加云杉桩
修改Crop Details从4到5,配置信息如下:
6、创建杉树砍伐落叶特效
在Assets -> Prefabs -> Crop -> Effects下复制DeciduousLeavesFalling重命名为PineConesFalling。只更改如下的值:
7、修改PoolManager对象配置
将Pool个数从3改为4,并且配置Prefab的值。
8、修改VFXManager.cs脚本
[SerializeField] private GameObject pineConesFallingPrefab = null;
完整的displayHarvestActionEffect函数代码如下:
新增HarvestActionEffect.pipeConesFalling的case。
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.choppingTreeTrunk:GameObject choppingTreeTrunk = PoolManager.Instance.ReuseObject(choppingTreeTrunkPrefab, effectPosition, Quaternion.identity);choppingTreeTrunk.SetActive(true);StartCoroutine(DisableHarvestActionEffect(choppingTreeTrunk, twoSeconds));break;case HarvestActionEffect.reaping:GameObject reaping = PoolManager.Instance.ReuseObject(reapingPrefab, effectPosition, Quaternion.identity);reaping.SetActive(true); StartCoroutine(DisableHarvestActionEffect(reaping, twoSeconds));break;case HarvestActionEffect.pipeConesFalling:GameObject pineConesFalling = PoolManager.Instance.ReuseObject(pineConesFallingPrefab, effectPosition, Quaternion.identity);pineConesFalling.SetActive(true);StartCoroutine(DisableHarvestActionEffect(pineConesFalling, twoSeconds));break;case HarvestActionEffect.none:break;default:break;}
}
配置VFXManager对象:
运行游戏: