网站测评必须做,灯笼制作手工简单又漂亮,罗湖商城网站建设找哪家公司比较安全,财务管理软件一、修复植物种植的问题
1.当手上存在植物时#xff0c;再次点击卡片上的植物就会在手上添加新的植物#xff0c;需要修改成只有手上没有植物时才能再次获取到植物。需要修改AddPlant方法。
public bool AddPlant(PlantType plantType) { //防止手上出现多个植…一、修复植物种植的问题
1.当手上存在植物时再次点击卡片上的植物就会在手上添加新的植物需要修改成只有手上没有植物时才能再次获取到植物。需要修改AddPlant方法。
public bool AddPlant(PlantType plantType) { //防止手上出现多个植物 if (currentPant ! null) return false; PlantManagr plantPrefab GetPlantPrefab(plantType); if(plantPrefab ! null) { //这里需要注意的是上面拿到的是PlantManagr当我们去是实例化这个组件就相当于去实例化这个组件所在的GammeObject。 currentPant GameObject.Instantiate(plantPrefab); } else { Debug.Log(游戏物体不存在); return false; } return true; }
只有当手上没有植物时点击卡片上的植物才会获取植物。
修改点击事件增加一个条件只有AddPlant方法返回为true时才能执行后续代码。 public void Onclick() { if (needSunPoint SunManager.Instance.SunPoint) return; //TODO:并进行种植 bool isSuccess HandManager.Instance.AddPlant(plantType); //返回true说明手上还有植物不能再次执行点击事件。 if (isSuccess) { SunManager.Instance.SubSun(needSunPoint); TransitionToCooling(); } }
这样修改后当手上存在有植物时不会再次获取到植物在手上。
2.当植物在手上时得让植物存于禁用状态
添加一个用于转换的Disable状态的方法。 private void TransitionToDisable() { plantState PlantState.Disable; }
同时还需要将其的Animator在植物拿在手上时不能播放动画。 GetComponentAnimator().enabled false;
二、植物种植在地面功能实现
当鼠标点击哪个格子就把植物种植在对应的植物上如何判断鼠标点击到了哪个格子呢因此就要给每个格子添加一个碰撞器然后通过碰撞器其判断点击到哪个格子上了 。 创建一个物体用于判断点击到哪个格子在其身上添加一个组件Box Collider 2D这样才能判断鼠标是否点击到这个格子上。通过使用OnMouseDown事件可以检测鼠标是否点击到这个格子身上再将其设置为预制体。 现在将碰撞器布满背景最后效果如下 然后为这写碰撞器添加一个公共的父类然后为其预制体添加一个脚本CellControl用来控制自己是否被点击到并将其设置为触发器。
在CellControl中通过使用OnMouseDown事件去检测自身点击当被点击时就表示要被种植了然后将这个点击事件传递给HandManager因为HandManager是知道要种植的植物的。
为了避免同一个位置可以种植多个植物再写一个方法来检测并种植当前位置是否存在之植物。
因此在HandManager中写一个方法来调用代码如下 public void OnMouseDown() { HandManager.Instance.OnCellClicke(this); } //检测当前位置是否存在植物 public bool ChechPlant(PlantManagr plant) { if (currentPlant ! null) return false; currentPlant plant; currentPlant.transform.position transform.position; return true; } public void OnCellClicke(CellControl cell) { Debug.Log(OnCellClicke执行了); if (currentPlant null) return; bool isSuccess cell.ChechPlant(currentPlant); Debug.Log(isSuccess); //将其设置为空不让其在跟随鼠标 if (isSuccess) { currentPlant.GetComponentAnimator().enabled true; currentPlant null; } }
效果如下只有当前位置没有种植过植物才能种植