public void resetActionUnitPos(ActionRoleData unit) { if (unit.isEnemy) { unit.transform.position = startEnemyPos.position; if (SDGameManager.Instance.isFastModeEnabled) { unit.isActed = false; } } else { unit.transform.position = startHeroPos.position; if (SDGameManager.Instance.isFastModeEnabled) { unit.isActed = false; } } }
//关卡开始时初始化所有行动单元,赋予速度 public void initAction(List <BattleRoleData> allUnits) { stopAction(); foreach (Transform t in actionUnitParent) { Destroy(t.gameObject); } // standardSpeedArray = new int[allUnits.Count]; allActionUnits = new List <ActionRoleData>(); for (int i = 0; i < allUnits.Count; i++) { BattleRoleData BUnit = allUnits[i]; Transform actionUnit = Instantiate(actionUnitPrefab) as Transform; actionUnit.SetParent(actionUnitParent); actionUnit.GetComponent <ActionRoleData>().nameText.text = BUnit.name; ActionRoleData unit = actionUnit.GetComponent <ActionRoleData>(); // int speed = BUnit.ThisBasicRoleProperty()._role.ReadCurrentRoleRA(AttributeData.Speed); standardSpeedArray[i] = speed; unit.speed = speed; // //actionUnit.GetComponent<Canvas>().sortingOrder = i; if (BUnit._Tag == SDConstants.CharacterType.Enemy) { actionUnit.position = startEnemyPos.position; unit.isEnemy = true; if (BUnit.IsBoss) { unit.headImage.initCharacterModelById (BUnit.UnitId, SDConstants.CharacterAnimType.Enemy, 0.15f, true); } else { unit.headImage.initCharacterModelById (BUnit.UnitId, SDConstants.CharacterAnimType.Enemy, 0.3f, true); } } else { actionUnit.position = startHeroPos.position; unit.isEnemy = false; int hashcode = BUnit.unitHashcode; string heroId = SDDataManager.Instance.getHeroIdByHashcode(hashcode); SDConstants.CharacterAnimType type = (SDConstants.CharacterAnimType) (SDDataManager.Instance.getHeroCareerById(heroId)); //unit.headImage.initCharacterModel(hashcode, type, 3f); } actionUnit.localScale = Vector3.one; if (BUnit.ReadThisStateEnable(StateTag.Dizzy)) { unit.stateBgImage.sprite = unit.stateSprites[1]; } else { unit.stateBgImage.sprite = unit.stateSprites[0]; } unit.battleUnit = BUnit; unit.isActed = false; allActionUnits.Add(unit); if (BUnit.IsDead) { actionUnit.gameObject.SetActive(false); } } BuildABMoveSpeed(allActionUnits); //BM.NextActionUnit(); startAction(); }
void FixedUpdate() { if (IsWaitingAction || allActionUnits == null || SDGameManager.Instance.isGamePaused) { return; } for (int i = 0; i < allActionUnits.Count; i++) { if (!allActionUnits[i].isActed) { if (allActionUnits[i].transform.position.x < endPos.position.x) { allActionUnits[i].transform.position += Vector3.right * ActionBarSpeedFix * allActionUnits[i].speed * Time.deltaTime; } if (allActionUnits[i].transform.position.x >= endPos.position.x) { if (allActionUnits[i].battleUnit.IsDead) { allActionUnits[i].isActed = true; if (allActionUnits[i].battleUnit != null) { Debug.Log("该角色" + allActionUnits[i].battleUnit.name + " 状态为死亡"); } resetActionUnitPos(allActionUnits[i]); } else { if (allActionUnits[i].battleUnit.ReadThisStateEnable(StateTag.Dizzy)) { allActionUnits[i].isActed = true; resetActionUnitPos(allActionUnits[i]); BM.ShowNextActionUnit(); } else { stopAction(); CurrentActionUnit = allActionUnits[i]; allActionUnits[i].isActed = true; Debug.Log("当前行动单位 name: " + CurrentActionUnit.battleUnit.name); BM.ShowNextActionUnit(); if (!SDGameManager.Instance.isFastModeEnabled) { if (i == allActionUnits.Count - 1) { resetAction(); } } break; } } //一回合结束 if (i == allActionUnits.Count - 1) { resetAction(); WhenOneRoundFinish(); // BM.whenOneRoundStart(); } } } } }