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對象:
運行游戲: