|
@@ -22,6 +22,8 @@ public class DogInScene //: ScriptableObject
|
|
|
public DateTime drinkStartTime, eatStartTime; // 记录吃喝开始时间
|
|
|
public bool itemConsumeProgress = false; // 是否在吃和喝的进程中。如果是的话,跳过常规动画检测
|
|
|
public bool isMovingToBowl;
|
|
|
+ private float shortIntakeTime = 0.5f; // 喝水和吃饭的短时间间隔,单位秒。当宠物吃饱喝足时候调用。
|
|
|
+ private float longIntakeTime = 10f; // 喝水和吃饭的长时间间隔,单位秒。当宠物没有吃饱喝足时候调用。
|
|
|
|
|
|
|
|
|
|
|
@@ -481,43 +483,34 @@ public class DogInScene //: ScriptableObject
|
|
|
HomeController.dogCam.Priority = 10;
|
|
|
HomeController.playerCam.Priority = 1;
|
|
|
|
|
|
- while (ts.TotalSeconds < 10)
|
|
|
+ float intakeTime;
|
|
|
+ if (dogProperty.thirsty >= 90)
|
|
|
+ {
|
|
|
+ intakeTime = shortIntakeTime; // 如果狗口渴程度大于90,喝水时间为短时间
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ intakeTime = longIntakeTime; // 否则喝水时间为长时间
|
|
|
+ }
|
|
|
+ while (ts.TotalSeconds < intakeTime)
|
|
|
{
|
|
|
yield return new WaitForSeconds(0.25f);
|
|
|
ts = DateTime.Now - this.drinkStartTime;
|
|
|
//Debug.Log("结束饮水过程:" + ts.TotalSeconds);
|
|
|
|
|
|
- // 狗一致看向谁碰,确保就算被撞击后依然看向水盆
|
|
|
+ // 狗一致看向碗,确保就算被撞击后依然看向碗
|
|
|
this.gameObject.transform.LookAt(targetBowl.transform.position);
|
|
|
}
|
|
|
- // 播放10秒后结束饮水过程
|
|
|
- this.animator.SetBool("isDrinking", false);
|
|
|
-
|
|
|
- // 摄像头恢复玩家视角
|
|
|
- HomeController.dogCam.Priority = 1;
|
|
|
- HomeController.playerCam.Priority = 10;
|
|
|
-
|
|
|
- // 让水物消失
|
|
|
- var water = GameObject.Find("Water");
|
|
|
- water.transform.localPosition = new Vector3(-1, -10, -1);
|
|
|
-
|
|
|
- //var water = GameObject.Find("Water");
|
|
|
- //water.SetActive(false);
|
|
|
+ // 结束吃狗粮动画
|
|
|
+ this.animator.SetBool("isEating", false);
|
|
|
+ itemConsumeProgress = false; // 关闭整个道具使用的进程
|
|
|
+ dogState = DogState.IDLE;
|
|
|
+ QuitItemConsume();
|
|
|
|
|
|
- // 再等待几秒后让水盆消失
|
|
|
- while (ts.TotalSeconds < 18)
|
|
|
+ if (!HomeController.Instance.isHideBowlRunning)
|
|
|
{
|
|
|
- yield return new WaitForSeconds(0.25f);
|
|
|
- ts = DateTime.Now - this.drinkStartTime;
|
|
|
- //Debug.Log("让水盆消失:" + ts.TotalSeconds);
|
|
|
+ HomeController.Instance.StartCoroutine(HomeController.Instance.HideBowlAfterItemConsume(ItemGroup.WATER)); // 启动碗隐藏的协程
|
|
|
}
|
|
|
-
|
|
|
- targetBowl.transform.position = new Vector3(-1, -10, -1); // 将喝水碗回归原位
|
|
|
- water.transform.localPosition = Vector3.zero; // 将食物回归原位
|
|
|
- this.itemConsumeProgress = false; // 关闭整个道具使用的进程
|
|
|
- //this.dogState = "idle";
|
|
|
- this.dogState = DogState.IDLE;
|
|
|
- QuitItemConsume();
|
|
|
}
|
|
|
|
|
|
public IEnumerator EatAnimation()
|
|
@@ -532,49 +525,40 @@ public class DogInScene //: ScriptableObject
|
|
|
HomeController.dogCam.Priority = 10;
|
|
|
HomeController.playerCam.Priority = 1;
|
|
|
|
|
|
- while (ts.TotalSeconds < 10)
|
|
|
+ float intakeTime;
|
|
|
+ if (dogProperty.satiety >= 90)
|
|
|
+ {
|
|
|
+ intakeTime = shortIntakeTime; // 如果狗饱腹程度大于90,喝水时间为短时间
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ intakeTime = longIntakeTime; // 否则喝水时间为长时间
|
|
|
+ }
|
|
|
+ while (ts.TotalSeconds < intakeTime)
|
|
|
{
|
|
|
yield return new WaitForSeconds(0.25f);
|
|
|
ts = DateTime.Now - this.eatStartTime;
|
|
|
|
|
|
- // 狗一致看向谁碰,确保就算被撞击后依然看向水盆
|
|
|
+ // 狗一致看向碗,确保就算被撞击后依然看向碗
|
|
|
this.gameObject.transform.LookAt(targetBowl.transform.position);
|
|
|
}
|
|
|
- // 播放10秒后结束吃狗粮过程
|
|
|
+ // 结束吃狗粮动画
|
|
|
this.animator.SetBool("isEating", false);
|
|
|
- //Debug.Log(this.dogProperty.dog_name + "狗吃完了");
|
|
|
- // 摄像头恢复玩家视角
|
|
|
- HomeController.dogCam.Priority = 1;
|
|
|
- HomeController.playerCam.Priority = 10;
|
|
|
-
|
|
|
- // 让食物消失
|
|
|
- var food = GameObject.Find("Food");
|
|
|
- food.transform.localPosition = new Vector3(-1, -10, -1);
|
|
|
- //var water = GameObject.Find("Water");
|
|
|
- //water.SetActive(false);
|
|
|
+ itemConsumeProgress = false; // 关闭整个道具使用的进程
|
|
|
+ dogState = DogState.IDLE;
|
|
|
+ QuitItemConsume();
|
|
|
|
|
|
- // 再等待几秒后让饭盆消失
|
|
|
- while (ts.TotalSeconds < 18)
|
|
|
+ if (!HomeController.Instance.isHideBowlRunning)
|
|
|
{
|
|
|
- yield return new WaitForSeconds(0.25f);
|
|
|
- ts = DateTime.Now - this.eatStartTime;
|
|
|
- //Debug.Log("让水盆消失:" + ts.TotalSeconds);
|
|
|
+ HomeController.Instance.StartCoroutine(HomeController.Instance.HideBowlAfterItemConsume(ItemGroup.FOOD)); // 启动碗隐藏的协程
|
|
|
}
|
|
|
- //Debug.Log(this.dogProperty.dog_name + "把碗放回去了");
|
|
|
- targetBowl.transform.position = new Vector3(-1, -10, -1); // 将饭盆回归原位
|
|
|
- food.transform.localPosition = Vector3.zero; // 将食物回归原位
|
|
|
- this.itemConsumeProgress = false; // 关闭整个道具使用的进程
|
|
|
- //this.dogState = "idle";
|
|
|
- this.dogState = DogState.IDLE;
|
|
|
- QuitItemConsume();
|
|
|
-
|
|
|
}
|
|
|
|
|
|
public void QuitItemConsume()
|
|
|
{
|
|
|
- var uiPlaceholder = GameObject.Find("UI Placeholder");
|
|
|
- var vamUI = uiPlaceholder.transform.Find("VoiceAndMenu").gameObject;
|
|
|
- vamUI.SetActive(true);
|
|
|
+ // var uiPlaceholder = GameObject.Find("UI Placeholder");
|
|
|
+ // var vamUI = uiPlaceholder.transform.Find("VoiceAndMenu").gameObject;
|
|
|
+ // vamUI.SetActive(true);
|
|
|
BoxCollider boxCollider = gameObject.GetComponent<BoxCollider>(); // 喝水吃饭场景关闭isTrigger
|
|
|
boxCollider.isTrigger = true;
|
|
|
this.moveSpeed = UnityEngine.Random.Range(0.3f, 0.6f);
|