1、目標
Player動作時產生的聲音,比如砍倒樹木、砸石頭。
2、修復NPC快速行進的bug(與本節無關)
修改NPCMovement.cs腳本的MoveToGridPositionRoutine方法。
確保npcCalculatedSpeed的速度不少于最慢速度。
原代碼:
修改后的代碼:
3、修改動作聲音相關的代碼及對象
(1)修改CropDetails.cs腳本
添加一行代碼:
(2)修改so_CropDetailsList的實例
位于:Assets/Scriptable Object Assets/Crop/so_CropDetailsList.asset
所有的配置如下:
序號 | Item Code | Harvest Sound |
0 | 10006 | Effect Pluck |
1 | 10000 | Effect Tree Falling |
2 | 10010 | Effect Wood Splinters |
3 | 10009 | Effect Tree Falling |
4 | 10011 | Effect Wood Splinters |
5 | 10014 | Effect Stone Shatter |
6 | 10016 | Effect Stone Shatter |
(3)修改Crop.cs腳本
修改HarvestCrop函數添加如下代碼:
完整代碼如下:
private void HarvestCrop(bool isUsingToolRight, bool isUsingToolUp, CropDetails cropDetails, GridPropertyDetails gridPropertyDetails, Animator animator){// Is there a harvested animationif(cropDetails.isHarvestedAnimation && animator != null){// if harvest sprite then add to sprite rendererif(cropDetails.harvestedSprite != null){if(cropHarvestedSpriteRenderer != null){cropHarvestedSpriteRenderer.sprite = cropDetails.harvestedSprite; // 一張圖片}}if(isUsingToolRight || isUsingToolUp){animator.SetTrigger("harvestright");}else{animator.SetTrigger("harvestleft");}}// Is there a harvested soundif(cropDetails.harvestSound != SoundName.none){AudioManager.Instance.PlaySound(cropDetails.harvestSound);}// Delete crop from grid propertiesgridPropertyDetails.seedItemCode = -1;gridPropertyDetails.growthDays = -1;gridPropertyDetails.daysSinceLastHarvest = -1;gridPropertyDetails.daysSinceWatered = -1;// Should the crop be hidden before the harvested animationif (cropDetails.hideCropBeforeHarvestedAnimation){GetComponentInChildren<SpriteRenderer>().enabled = false;}// Should box colliders be disabled before harvestif (cropDetails.disableCropCollidersBeforeHarvestedAnimation){// Disable any box collidersCollider2D[] collider2Ds = GetComponentsInChildren<Collider2D>();foreach(Collider2D collider2D in collider2Ds){collider2D.enabled = false;}}GridPropertiesManager.Instance.SetGridPropertyDetails(gridPropertyDetails.gridX, gridPropertyDetails.gridY, gridPropertyDetails);// Is there a harvested animation - Destory this crop game object after animation completedif(cropDetails.isHarvestedAnimation && animator != null){StartCoroutine(ProcessHarvestedActionsAfterAnimation(cropDetails, gridPropertyDetails, animator));}else{HarvestActions(cropDetails, gridPropertyDetails);}}
(4)修改ItemNudge.cs腳本
修改OnTriggerEnter2D和OnTriggerExit2D函數添加如下內容:
確保Player的Tag是"Player"。
(5)修改ItemPickup.cs腳本
修改OnTriggerEnter2D函數添加如下內容:
(6)修改Player.cs腳本
修改PlantSeedAtCursor函數添加如下內容:
修改HoeGroundAtCursor函數添加如下代碼:
修改WaterGroundAtCursor函數添加如下代碼:
修改ChopInPlayerDirection函數添加如下代碼:
修改CollectInPlayerDirection函數添加如下代碼:
修改BreakInPlayerDirection函數添加如下代碼:
修改UseToolInPlayerDirection函數添加如下代碼:
運行游戲:
如下情況會有聲音:
1)收集道具
2)穿過草叢
3)用鐮刀割草
4)用稿子敲擊石頭
5)挖地
6)播散種子
7)砍樹
8)用籃子收集蘿卜
9)澆水