/// <summary> /// 玩家和怪物开始战斗 /// </summary> public void PlayerAndMonsterStartFight() { expUICtr.ShowFightPlane(); // 执行玩家角色战斗前技能回调 battleMonsterCtr.StartFight(battlePlayerCtr); battlePlayerCtr.StartFight(battleMonsterCtr); battlePlayerCtr.ExcuteBeforeFightSkillCallBacks(battleMonsterCtr); battleMonsterCtr.ExcuteBeforeFightSkillCallBacks(battlePlayerCtr); }
private IEnumerator AdjustAgentsAndCameraAndStartFight() { yield return(new WaitUntil(() => Time.timeScale == 1)); yield return(null); Vector3 playerOriPos = battlePlayerCtr.transform.position; Vector3 monsterOriPos = battleMonsterCtr.transform.position; if (Mathf.RoundToInt(playerOriPos.y) == Mathf.RoundToInt(monsterOriPos.y)) { battlePlayerCtr.transform.position = new Vector3(0.2f * (monsterOriPos.x - playerOriPos.x) + playerOriPos.x, playerOriPos.y, 0); if (battlePlayerCtr.towards == MyTowards.Left) { battleMonsterCtr.TowardsRight(); } else { battleMonsterCtr.TowardsLeft(); } } else if (Mathf.RoundToInt(playerOriPos.x) == Mathf.RoundToInt(monsterOriPos.x)) { float newPlayerPosX = playerOriPos.x; float newPlayerPosY = playerOriPos.y; float newMonsterPosX = monsterOriPos.x; float newMonsterPosY = monsterOriPos.y; if (playerOriPos.y > monsterOriPos.y && battleMonsterCtr.towards == MyTowards.Right) { newPlayerPosX = playerOriPos.x + 0.2f; newPlayerPosY = playerOriPos.y - 1f; battlePlayerCtr.transform.position = new Vector3(newPlayerPosX, newPlayerPosY, 0); battlePlayerCtr.TowardsLeft(); newMonsterPosX = monsterOriPos.x - 0.2f; newMonsterPosY = monsterOriPos.y - 0.3f; battleMonsterCtr.transform.position = new Vector3(newMonsterPosX, newMonsterPosY, 0); } else if (playerOriPos.y > monsterOriPos.y && battleMonsterCtr.towards == MyTowards.Left) { newPlayerPosX = playerOriPos.x - 0.2f; newPlayerPosY = playerOriPos.y - 1f; battlePlayerCtr.transform.position = new Vector3(newPlayerPosX, newPlayerPosY, 0); battlePlayerCtr.TowardsRight(); newMonsterPosX = monsterOriPos.x + 0.2f; newMonsterPosY = monsterOriPos.y - 0.3f; battleMonsterCtr.transform.position = new Vector3(newMonsterPosX, newMonsterPosY, 0); } else if (playerOriPos.y < monsterOriPos.y && battleMonsterCtr.towards == MyTowards.Left) { newPlayerPosX = playerOriPos.x - 0.2f; newPlayerPosY = playerOriPos.y + 1f; battlePlayerCtr.transform.position = new Vector3(newPlayerPosX, newPlayerPosY, 0); battlePlayerCtr.TowardsRight(); newMonsterPosX = monsterOriPos.x + 0.2f; newMonsterPosY = monsterOriPos.y + 0.3f; battleMonsterCtr.transform.position = new Vector3(newMonsterPosX, newMonsterPosY, 0); } else if (playerOriPos.y < monsterOriPos.y && battleMonsterCtr.towards == MyTowards.Right) { newPlayerPosX = playerOriPos.x + 0.2f; newPlayerPosY = playerOriPos.y + 1f; battlePlayerCtr.transform.position = new Vector3(newPlayerPosX, newPlayerPosY, 0); battlePlayerCtr.TowardsLeft(); newMonsterPosX = monsterOriPos.x - 0.2f; newMonsterPosY = monsterOriPos.y + 0.3f; battleMonsterCtr.transform.position = new Vector3(newMonsterPosX, newMonsterPosY, 0); } } battlePlayerCtr.InitFightTextDirectionTowards(battleMonsterCtr.transform.position); battleMonsterCtr.InitFightTextDirectionTowards(battlePlayerCtr.transform.position); Camera c = Camera.main; float cameraSizeFixSpeed = 2f; float fixDuration = 0.5f; float timer = 0; while (timer < fixDuration) { c.orthographicSize -= cameraSizeFixSpeed * Time.deltaTime; // c.transform.localPosition -= new Vector3 (0, cameraFixSpeedY * Time.deltaTime, 0); timer += Time.deltaTime; yield return(null); } // 执行玩家角色战斗前技能回调 battlePlayerCtr.ExcuteBeforeFightSkillCallBacks(battleMonsterCtr); // 执行怪物角色战斗前技能回调 battleMonsterCtr.ExcuteBeforeFightSkillCallBacks(battlePlayerCtr); battleMonsterCtr.StartFight(battlePlayerCtr); battlePlayerCtr.StartFight(battleMonsterCtr); expUICtr.ShowFightPlane(); EnableInteractivity(); }