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)浇水