Example #1
0
        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();
        }