public override void OnTriggerEnter2D(Collider2D col) { if (!isTrapOn) { return; } SoundManager.Instance.PlayAudioClip("MapEffects/" + audioClipName); BattlePlayerController bp = col.GetComponent <BattlePlayerController> (); if (bp == null) { return; } // if(MyTool.ApproximatelySamePosition2D(bp.transform.position,this.transform.position)){ agentOriPos = new Vector3(Mathf.RoundToInt(col.transform.position.x), Mathf.RoundToInt(col.transform.position.y), 0); backgroundOriPos = Camera.main.transform.Find("Background").position; // }else{ // agentOriPos = new Vector3 (Mathf.RoundToInt(col.transform.position.x), Mathf.RoundToInt(col.transform.position.y), 0); // // backgroundOriPos = Camera.main.transform.Find ("Background").position; Debug.Log(backgroundOriPos); // } Debug.LogFormat("oriPos:{0}----currentAgentPos:{1}", agentOriPos, col.transform.position); bp.StopMove(); bp.singleMoveEndPos = agentOriPos; bp.InitFightTextDirectionTowards(transform.position); bp.propertyCalculator.InstantPropertyChange(bp, PropertyType.Health, -lifeLose, false); if (normalTrapTriggeredCoroutine != null) { StopCoroutine(normalTrapTriggeredCoroutine); } normalTrapTriggeredCoroutine = NormalTrapTriggerEffect(bp); StartCoroutine(normalTrapTriggeredCoroutine); }
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(); }