void Awake() { _commonTopBarView = CommonTopBarView.CreateNewAndAttachTo(core.transform); _commonTopBarView.SetAsCommonStyle(string.Empty, ClickCloseHandler, true, true, true, false); _commonTopBarView.transform.localPosition = new Vector3(_commonTopBarView.transform.localPosition.x, _commonTopBarView.transform.localPosition.y, -1000); Logic.UI.Chat.View.SystemNoticeView.Create(systemNoticeRoot); PlayerInfo playerInfo = GameProxy.instance.PlayerInfo; _characterEntity = CharacterEntity.CreatePlayerEntityAsUIElement(playerInfo, roleModelRootRectTransform, false, false); AnimatorUtil.SetBool(_characterEntity.anim, AnimatorUtil.RUN, true); chapterViewPrefab.gameObject.SetActive(true); List <ChapterInfo> chapterInfoList = ChapterProxy.instance.GetAllChapterInfos(); int chapterInfoCount = chapterInfoList.Count; for (int i = 0; i < chapterInfoCount; i++) { ChapterInfo chapterInfo = chapterInfoList[i]; ChapterView chapterView = GameObject.Instantiate <ChapterView>(chapterViewPrefab); // chapterView.SetChapterInfoAndType(chapterInfo); chapterView.transform.SetParent(chapterBGsRoot, false); chapterView.transform.localScale = Vector3.one; chapterView.transform.localPosition = chapterInfo.chapterData.chapterPosition; _chapterViewList.Add(chapterView); _chapterViewsDictionary.Add(chapterInfo.chapterData.Id, chapterView); int dungeonsCount = chapterInfo.chapterData.easyDungeonIDList.Count; for (int dungeonIndex = 0; dungeonIndex < dungeonsCount; dungeonIndex++) { int easyDungeonID = chapterInfo.chapterData.easyDungeonIDList[dungeonIndex]; int normalDungeonID = chapterInfo.chapterData.normalDungeonIDList[dungeonIndex]; int hardDungeonID = chapterInfo.chapterData.hardDungeonIDList[dungeonIndex]; DungeonButton dungeonButton = GameObject.Instantiate <DungeonButton>(dungeonButtonPrefab); dungeonButton.transform.SetParent(dungeonButtonsRoot, false); dungeonButton.transform.localPosition = chapterInfo.chapterData.chapterPosition + chapterInfo.chapterData.positions[dungeonIndex]; dungeonButton.SetDungeonInfo(DungeonProxy.instance.GetDungeonInfo(chapterInfo.chapterData.easyDungeonIDList[dungeonIndex])); dungeonButton.name = string.Format("dungeon_button_{0}", dungeonButton.DungeonInfo.dungeonData.dungeonID); dungeonButton.gameObject.SetActive(true); _easyDungeonButtonDic.Add(easyDungeonID, dungeonButton); _normalDungeonButtonDic.Add(normalDungeonID, dungeonButton); _hardDungeonButtonDic.Add(hardDungeonID, dungeonButton); } dungeonButtonPrefab.gameObject.SetActive(false); } chapterViewPrefab.gameObject.SetActive(false); selectChapterScrollRect.content.sizeDelta = RectTransformUtility.CalculateRelativeRectTransformBounds(chapterBGsRoot).size; selectChapterScrollRect.onEndDragDelegate += OnMapEndDragHandler; selectChapterScrollRect.onDragLeftDelegate += OnMapDragLeftHandler; selectChapterScrollRect.onDragRightDelegate += OnMapDragRightHandler; _chapterScrollViewportSize = selectChapterScrollRect.viewport.rect.size; AudioController.instance.PlayBGMusic(Logic.Audio.Controller.AudioController.SELECTDUNGEON); BindDelegate(); }
public void CreatePlayer() { Transform parent = null; if (expeditionDungeonInfo.data.type == (int)ExpeditionDungeonType.Expedition_Normal) { parent = playerModelRoot; } else { parent = playerModelBoxRoot; } PlayerInfo playerInfo = GameProxy.instance.PlayerInfo; _characterEntity = CharacterEntity.CreatePlayerEntityAsUIElement(playerInfo, parent, false, false); AnimatorUtil.SetBool(_characterEntity.anim, AnimatorUtil.RUN, true); }
public void SetAnimBoolean(CharacterEntity character, string argName, bool value) { AnimatorUtil.SetBool(character.anim, argName, value); }
public override void Execute() { if (!character || mechanicsData == null || skillInfo == null) { return; } int layer = (int)LayerType.Fight; int stateNameHash = 0; AnimatorPlayType animatorPlayType = AnimatorPlayType.None; if (mechanicsType == MechanicsType.None) { mechanicsType = mechanicsData.mechanicsType; } switch (mechanicsType) { //攻击 case MechanicsType.Damage: case MechanicsType.DrainDamage: case MechanicsType.IgnoreDefenseDamage: case MechanicsType.ImmediatePercentDamage: case MechanicsType.SwimmyExtraDamage: case MechanicsType.LandificationExtraDamage: case MechanicsType.BleedExtraDamage: case MechanicsType.FrozenExtraDamage: case MechanicsType.PoisoningExtraDamage: case MechanicsType.TagExtraDamage: case MechanicsType.IgniteExtraDamage: if ((character.status == Status.BootSkill && breakable) || character.status != Status.BootSkill) //非引导技能,或者引导技能可打断 { animatorPlayType = AnimatorPlayType.Play; switch (FightController.instance.fightType) { case FightType.PVE: case FightType.Arena: case FightType.DailyPVE: case FightType.Expedition: case FightType.WorldTree: case FightType.WorldBoss: case FightType.FirstFight: case FightType.SkillDisplay: case FightType.MineFight: #if UNITY_EDITOR case FightType.Imitate: #endif if (Logic.Game.GameSetting.instance.closeupCameraable) { if (FightController.instance.fightStatus == FightStatus.Normal) { if (skillInfo.animationData.closeup) { if (mechanicsMaker.isPlayer || (!mechanicsMaker.isPlayer && Logic.Character.Controller.EnemyController.instance.isBoss(mechanicsMaker.characterInfo.instanceID))) //只有玩家和boss有特写镜头 { layer = (int)LayerType.Closeup; } } } } break; case FightType.PVP: case FightType.FriendFight: case FightType.ConsortiaFight: break; } switch (skillInfo.skillData.skillType) { case SkillType.Hit: if (Fight.Controller.FightController.instance.fightStatus == FightStatus.Normal) { stateNameHash = AnimatorUtil.GETHIT_1_ID; } break; case SkillType.Skill: case SkillType.Aeon: switch (Fight.Controller.FightController.instance.fightStatus) { case FightStatus.FloatComboing: character.anim.speed = Game.GameSetting.instance.speed; stateNameHash = AnimatorUtil.FLOATGETHIT_ID; Cameras.Controller.CameraController.instance.Shake(); break; case FightStatus.TumbleComboing: character.anim.speed = Game.GameSetting.instance.speed; stateNameHash = AnimatorUtil.TUMBLEGETHIT_ID; Cameras.Controller.CameraController.instance.Shake(); break; case FightStatus.Normal: stateNameHash = AnimatorUtil.GETHIT_2_ID; break; } break; } character.SetStatus(Status.GetHit); } break; case MechanicsType.Float: animatorPlayType = AnimatorPlayType.Play; if (AnimatorUtil.GetBool(character.anim, AnimatorUtil.FLOATING) || AnimatorUtil.GetBool(character.anim, AnimatorUtil.TUMBLE)) //忽略再次连击 { switch (Fight.Controller.FightController.instance.fightStatus) { case FightStatus.FloatComboing: character.anim.speed = Game.GameSetting.instance.speed; stateNameHash = AnimatorUtil.FLOATGETHIT_ID; Cameras.Controller.CameraController.instance.Shake(); break; case FightStatus.TumbleComboing: character.anim.speed = Game.GameSetting.instance.speed; stateNameHash = AnimatorUtil.TUMBLEGETHIT_ID; Cameras.Controller.CameraController.instance.Shake(); break; case FightStatus.Normal: stateNameHash = AnimatorUtil.GETHIT_2_ID; break; } } else { if (character.floatable) { if (skillInfo.skillData.skillType == SkillType.Aeon) { stateNameHash = AnimatorUtil.FLOATGETHIT_ID; } else { stateNameHash = AnimatorUtil.FLOATSTART_ID; if (mechanicsMaker.isPlayer) { if (PlayerController.instance.HasFloatHeros()) { layer = (int)LayerType.FightCombo; Fight.Controller.FightController.instance.SetComboCharacter(mechanicsMaker, character); AnimatorUtil.SetBool(character.anim, AnimatorUtil.FLOATING, true); Fight.Controller.FightController.instance.fightStatus = FightStatus.FloatWaiting; } } else { if (EnemyController.instance.HasFloatEnemies()) { layer = (int)LayerType.FightCombo; Fight.Controller.FightController.instance.SetComboCharacter(mechanicsMaker, character); AnimatorUtil.SetBool(character.anim, AnimatorUtil.FLOATING, true); Fight.Controller.FightController.instance.fightStatus = FightStatus.FloatWaiting; } } } } else { stateNameHash = AnimatorUtil.GETHIT_2_ID; } } character.SetStatus(Status.GetHit); break; case MechanicsType.Tumble: animatorPlayType = AnimatorPlayType.Play; if (AnimatorUtil.GetBool(character.anim, AnimatorUtil.TUMBLE) || AnimatorUtil.GetBool(character.anim, AnimatorUtil.FLOATING)) //忽略再次连击 { switch (Fight.Controller.FightController.instance.fightStatus) { case FightStatus.FloatComboing: character.anim.speed = Game.GameSetting.instance.speed; stateNameHash = AnimatorUtil.FLOATGETHIT_ID; Cameras.Controller.CameraController.instance.Shake(); break; case FightStatus.TumbleComboing: character.anim.speed = Game.GameSetting.instance.speed; stateNameHash = AnimatorUtil.TUMBLEGETHIT_ID; Cameras.Controller.CameraController.instance.Shake(); break; case FightStatus.Normal: stateNameHash = AnimatorUtil.GETHIT_2_ID; break; } } else { if (character.floatable) { if (skillInfo.skillData.skillType == SkillType.Aeon) { stateNameHash = AnimatorUtil.TUMBLEGETHIT_ID; } else { stateNameHash = AnimatorUtil.TUMBLESTART_ID; if (mechanicsMaker.isPlayer) { if (PlayerController.instance.HasTumbleHeros()) { layer = (int)LayerType.FightCombo; Fight.Controller.FightController.instance.SetComboCharacter(mechanicsMaker, character); AnimatorUtil.SetBool(character.anim, AnimatorUtil.TUMBLE, true); Fight.Controller.FightController.instance.fightStatus = FightStatus.TumbleWaiting; } } else { if (EnemyController.instance.HasTumbleEnemies()) { layer = (int)LayerType.FightCombo; Fight.Controller.FightController.instance.SetComboCharacter(mechanicsMaker, character); AnimatorUtil.SetBool(character.anim, AnimatorUtil.TUMBLE, true); Fight.Controller.FightController.instance.fightStatus = FightStatus.TumbleWaiting; } } } } else { stateNameHash = AnimatorUtil.GETHIT_2_ID; } } character.SetStatus(Status.GetHit); break; } if (stateNameHash != 0) { switch (animatorPlayType) { case AnimatorPlayType.Play: //if (Fight.Controller.FightController.instance.fightStatus == FightStatus.Normal) //{ if (character.canPlayAnimator && character.isInPlace) { AnimatorUtil.Play(character.anim, stateNameHash, 0, 0f); } //} //else // AnimatorUtil.Play(character.anim, Animator.StringToHash(AnimatorUtil.BASE_LAYER + animName), 0, 0f); break; case AnimatorPlayType.Trigger: //if (character.canPlayAnimator && character.isInPlace) // AnimatorUtil.SetTrigger(character.anim, stateNameHash); break; } } if (mechanicsData.audioType != 0) { List <AudioData> audios = AudioData.GetAuidoDatasByType(mechanicsData.audioType); if (audios.Count > 0) { int index = Random.Range(0, audios.Count); AudioData audioData = audios[index]; AudioController.instance.PlayAudio(audioData.audioName, !audioData.accelerate, mechanicsData.audioDelay); } } Hero.Model.HeroData heroData = Hero.Model.HeroData.GetHeroDataByID((int)character.characterInfo.baseId); AudioData attackAudioData = AudioData.GetAudioDataById(heroData.audioUnderAttack); if (attackAudioData != null) { AudioController.instance.PlayAudio(attackAudioData.audioName, !attackAudioData.accelerate); } if (Logic.Game.GameSetting.instance.effectable) { PlayEffect(layer); } finish = true; }