Fixed #2695 【前端】新增两个职业各两个主动技能
| | |
| | | using TableConfig; |
| | | using Snxxz.UI; |
| | | |
| | | //04 28 玩家上马#tagPlayerRideHorse |
| | | //04 28 �������#tagPlayerRideHorse |
| | | |
| | | |
| | | |
| | |
| | | return; |
| | | } |
| | | |
| | | if (_hero == null || _hero.MovingState == E_MovingState.Ride) |
| | | if (_hero == null |
| | | || _hero.MovingState == E_MovingState.Ride |
| | | || _hero.IsPolyMorph) |
| | | { |
| | | return; |
| | | } |
| | |
| | |
|
| | | if (_attacker is GA_Player)
|
| | | {
|
| | | var _hero = _cTarget as GA_Hero;
|
| | |
|
| | | if (PlayerDatas.Instance.extersion.bossState == 1)
|
| | | {
|
| | | GA_Hero _hero = PlayerDatas.Instance.hero;
|
| | | if (_hero.SelectTarget == null
|
| | | || _hero.SelectTarget is GActorNpcFight)
|
| | | {
|
| | | _hero.SelectTarget = _hero.LockTarget = _attacker;
|
| | | }
|
| | | }
|
| | |
|
| | | if (_hero != null && _hero.MovingState == E_MovingState.Ride)
|
| | | {
|
| | | DTC0428_tagPlayerRideHorse.Send_tagPlayerRideHorse(false);
|
| | | _hero.SwitchHorse(0);
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | |
|
| | | if (AttackHandler.CheckPull(_attacker, _cTarget, 0))
|
| | | {
|
| | | _cTarget.StartBeatBack(0, MathUtility.ForwardXZ(_cTarget.Pos, _attacker.Pos));
|
| | | _cTarget.StartBeatBack(_attacker.ServerInstID, 0, MathUtility.ForwardXZ(_cTarget.Pos, _attacker.Pos));
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | {
|
| | | GAMgr.Instance.OnPlayerSyncCountChange();
|
| | | }
|
| | |
|
| | | if (_attacker is GA_Player)
|
| | | {
|
| | | var _hero = _cTarget as GA_Hero;
|
| | | if (_hero != null && _hero.MovingState == E_MovingState.Ride)
|
| | | {
|
| | | DTC0428_tagPlayerRideHorse.Send_tagPlayerRideHorse(false);
|
| | | _hero.SwitchHorse(0);
|
| | | }
|
| | | }
|
| | | }
|
| | | else if (_attacker.ServerInstID == PlayerDatas.Instance.PlayerId)
|
| | | {
|
| | |
| | |
|
| | | if (AttackHandler.CheckPull(_attacker, _cTarget, 0))
|
| | | {
|
| | | _cTarget.StartBeatBack(0, MathUtility.ForwardXZ(_cTarget.Pos, _attacker.Pos));
|
| | | _cTarget.StartBeatBack(_attacker.ServerInstID, 0, MathUtility.ForwardXZ(_cTarget.Pos, _attacker.Pos));
|
| | | }
|
| | |
|
| | | if (_sTarget.HurtHP != 0)
|
| | |
| | |
|
| | | if (AttackHandler.CheckPull(_attacker, _cTarget, 0))
|
| | | {
|
| | | _cTarget.StartBeatBack(0, MathUtility.ForwardXZ(_cTarget.Pos, _attacker.Pos));
|
| | | _cTarget.StartBeatBack(_attacker.ServerInstID, 0, MathUtility.ForwardXZ(_cTarget.Pos, _attacker.Pos));
|
| | | }
|
| | |
|
| | | if (_sTarget.HurtHP != 0)
|
| | |
| | | UserInputHandler.OnCirclePanelTouched += OnActiveInterrupt;
|
| | | UserInputHandler.OnClickedFloor += OnClickFloor;
|
| | | GA_Hero.OnLockTargetChanged += OnLockTargetChanged;
|
| | | GA_Hero.OnUserClickSkill += OnUserClickSkill;
|
| | | HeroBehaviour.OnUserClickSkill += OnUserClickSkill;
|
| | |
|
| | | OnEnter();
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | GA_Hero _hero = PlayerDatas.Instance.hero;
|
| | |
|
| | | if (_hero.IsPolyMorph)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | if (_hero.SelectTarget == _hero)
|
| | | {
|
| | |
| | |
|
| | | break;
|
| | | case 1:// 暂停状态
|
| | |
|
| | | if (m_NeedMoveToPos)
|
| | | {
|
| | | if (StatusMgr.Instance.CanMove(PlayerDatas.Instance.PlayerId))
|
| | |
| | | }
|
| | | UserInputHandler.OnCirclePanelTouched -= OnActiveInterrupt;
|
| | | UserInputHandler.OnClickedFloor -= OnClickFloor;
|
| | | GA_Hero.OnUserClickSkill -= OnUserClickSkill;
|
| | | HeroBehaviour.OnUserClickSkill -= OnUserClickSkill;
|
| | |
|
| | | OnExit();
|
| | | }
|
| | |
| | |
|
| | | UserInputHandler.OnCirclePanelTouched += OnActiveInterrupt;
|
| | | UserInputHandler.OnClickedFloor += OnClickFloor;
|
| | | GA_Hero.OnUserClickSkill += OnUserClickSkill;
|
| | | HeroBehaviour.OnUserClickSkill += OnUserClickSkill;
|
| | | GA_Hero.OnLockTargetChanged += OnLockTargetChanged;
|
| | | HeroBehaviour.OnStartHandupAI += OnStartHandupAI;
|
| | | MapTransferUtility.s_OnHeroStartMoveToNPC += OnStartMoveToNpc;
|
| | |
| | | {
|
| | | UserInputHandler.OnCirclePanelTouched -= OnActiveInterrupt;
|
| | | UserInputHandler.OnClickedFloor -= OnClickFloor;
|
| | | GA_Hero.OnUserClickSkill -= OnUserClickSkill;
|
| | | HeroBehaviour.OnUserClickSkill -= OnUserClickSkill;
|
| | | GA_Hero.OnLockTargetChanged -= OnLockTargetChanged;
|
| | | HeroBehaviour.OnStartHandupAI -= OnStartHandupAI;
|
| | | MapTransferUtility.s_OnHeroStartMoveToNPC -= OnStartMoveToNpc;
|
| | |
| | |
|
| | | public static event UnityAction<int> onCastSkill;
|
| | |
|
| | | /// <summary>
|
| | | /// 当用户点击了技能按钮, 并切技能可以释放的时候调用
|
| | | /// </summary>
|
| | | public static event UnityAction<int> OnUserClickSkill;
|
| | |
|
| | | public enum E_BehaviourState
|
| | | {
|
| | | None,
|
| | |
| | | || MapArea.IsInMapArea(m_Hero.CurMapArea, MapArea.E_Type.RebornSafe))
|
| | | {
|
| | | SysNotifyMgr.Instance.ShowTip("NoFighting");
|
| | | return;
|
| | | }
|
| | |
|
| | | if (m_Hero.IsPolyMorph)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | |
| | | _data.targetServerInstID = m_Hero.SelectTarget.ServerInstID;
|
| | | _data.defaultSkillID = m_WillUsedSkillID;
|
| | | m_Hero.aiHandler.currentType = E_HeroAIType.KillUntilDie;
|
| | | }
|
| | |
|
| | | if(OnUserClickSkill != null)
|
| | | {
|
| | | OnUserClickSkill(m_WillUsedSkillID);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | // 人物, 非小怪不计算伤害,不生成客户端数据
|
| | | if (_target.ActorType == GameObjType.gotPlayer)
|
| | | {
|
| | | GA_Player _player = _target as GA_Player;
|
| | | if (_player != null)
|
| | | {
|
| | | if (_player.MovingState == E_MovingState.Ride)
|
| | | {
|
| | | _player.SwitchHorse(0);
|
| | | }
|
| | | }
|
| | | continue;
|
| | | }
|
| | |
|
| | |
| | |
|
| | | if (CheckPull(attacker, target, soConfig.bodyControlId))
|
| | | {
|
| | | target.StartBeatBack(soConfig.bodyControlId, MathUtility.ForwardXZ(target.Pos, attacker.Pos));
|
| | | target.StartBeatBack(attacker.ServerInstID, soConfig.bodyControlId, MathUtility.ForwardXZ(target.Pos, attacker.Pos));
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | // 攻击者是玩家
|
| | | if (attacker.ActorType == GameObjType.gotPlayer)
|
| | | {
|
| | | return false;
|
| | | return _bodyControl.useForPlayer && target.CanPushedBack();
|
| | | }
|
| | | else if (attacker.ActorType == GameObjType.gotNPC)
|
| | | {
|
| | |
| | | |
| | | [Tooltip("表现的时间")] |
| | | public float duration;// 移动时间 |
| | | |
| | | [Tooltip("是否对玩家类型生效")] |
| | | public bool useForPlayer = false; |
| | | |
| | | [Tooltip("是推还是拉, 打钩是推,不打钩是拉")] |
| | | public bool pushOrPull = true; |
| | | |
| | | [Tooltip(@"限制位置, 以释放者为中心的偏移 |
| | | 可以为负值")] |
| | | public float limitDistance = 100; |
| | | } |
| | |
| | |
|
| | | protected void AddToNpcPosList(GActorFight attacker, GActorFight target, int bodyControlId, Vector3 direction, List<NPCPos> npcPosList)
|
| | | {
|
| | | // Debug.LogFormat("{0} attack {1} ==================== 0", attacker.GetType().ToString(), target.GetType().ToString());
|
| | | if (PreFightMission.Instance.IsFinished() == false)
|
| | | {
|
| | | return;
|
| | |
| | |
|
| | | SoBodyControl _bodyControl = ScriptableObjectLoader.LoadSoBodyControl(bodyControlId);
|
| | |
|
| | | if (!_bodyControl.pushOrPull)
|
| | | {
|
| | | direction = -direction;
|
| | | }
|
| | |
|
| | | float _distance = _bodyControl.curve.keys[_bodyControl.curve.length - 1].time;
|
| | |
|
| | | Vector3 _checkPos = target.Pos;
|
| | | Vector3 _pullPosition = _checkPos + direction * _distance;
|
| | |
|
| | | if (!_bodyControl.pushOrPull)
|
| | | {
|
| | | _pullPosition = attacker.Pos + MathUtility.ForwardXZ(target.Pos, attacker.Pos) * 0.5f;
|
| | | }
|
| | |
|
| | | _checkPos.y = 0;
|
| | | _pullPosition.y = 0;
|
| | |
| | | _pullPosition = _hit.position;
|
| | | }
|
| | |
|
| | | // 只认主角导致的推逻辑. 如果是其他人的退不认
|
| | | if (target is GActorNpcFight)
|
| | | {
|
| | | if (attacker is GA_Player)
|
| | | {
|
| | | return;
|
| | | }
|
| | | }
|
| | |
|
| | | if (GActor.TryGetValidPos(_pullPosition, ref _checkPos))
|
| | | {
|
| | | if (target.ActorType == GameObjType.gotPlayer)
|
| | | {
|
| | | GActorPlayerBase _player = target as GActorPlayerBase;
|
| | | //Debug.Log("--------------------------- 8");
|
| | | if (_player.MovingState != E_MovingState.Ride)
|
| | | if (target is GA_Hero)
|
| | | {
|
| | | //Debug.Log("--------------------------- 9");
|
| | | CB402_tagCMNPCBeatBack _beatBack = new CB402_tagCMNPCBeatBack();
|
| | | _beatBack.ObjType = (byte)GameObjType.gotPlayer;
|
| | | _beatBack.Count = 1;
|
| | | _beatBack.NPCPosList = new CB402_tagCMNPCBeatBack.tagCMNPCPos[1];
|
| | | _beatBack.NPCPosList[0] = new CB402_tagCMNPCBeatBack.tagCMNPCPos();
|
| | | _beatBack.NPCPosList[0].ObjID = (uint)target.ServerInstID;
|
| | | _beatBack.NPCPosList[0].PosX = (ushort)(_checkPos.x * 2f + GA_Hero.MapOffset.x);
|
| | | _beatBack.NPCPosList[0].PosY = (ushort)(_checkPos.z * 2f + GA_Hero.MapOffset.x);
|
| | | GameNetSystem.Instance.SendInfo(_beatBack);
|
| | | GActorPlayerBase _player = target as GActorPlayerBase;
|
| | | //Debug.Log("--------------------------- 8");
|
| | | if (_player.MovingState != E_MovingState.Ride)
|
| | | {
|
| | | // Debug.LogFormat("{0} attack {1} ==================== 9", attacker.GetType().ToString(), target.GetType().ToString());
|
| | | CB402_tagCMNPCBeatBack _beatBack = new CB402_tagCMNPCBeatBack();
|
| | | _beatBack.ObjType = (byte)GameObjType.gotPlayer;
|
| | | _beatBack.Count = 1;
|
| | | _beatBack.NPCPosList = new CB402_tagCMNPCBeatBack.tagCMNPCPos[1];
|
| | | _beatBack.NPCPosList[0] = new CB402_tagCMNPCBeatBack.tagCMNPCPos();
|
| | | _beatBack.NPCPosList[0].ObjID = (uint)target.ServerInstID;
|
| | | _beatBack.NPCPosList[0].PosX = (ushort)(_checkPos.x * 2f + GA_Hero.MapOffset.x);
|
| | | _beatBack.NPCPosList[0].PosY = (ushort)(_checkPos.z * 2f + GA_Hero.MapOffset.z);
|
| | | GameNetSystem.Instance.SendInfo(_beatBack);
|
| | | }
|
| | | }
|
| | | //else
|
| | | //{
|
| | |
| | | NPCPos _npcPos = new NPCPos
|
| | | {
|
| | | objId = (int)target.ServerInstID,
|
| | | posX = (int)(_checkPos.x * 2f),
|
| | | posY = (int)(_checkPos.z * 2f)
|
| | | posX = (int)(_checkPos.x * 2f + GA_Hero.MapOffset.x),
|
| | | posY = (int)(_checkPos.z * 2f + GA_Hero.MapOffset.z)
|
| | | };
|
| | | npcPosList.Add(_npcPos);
|
| | | }
|
| | |
| | | /// 当切换锁定目标的时候, 为空的时候id=0
|
| | | /// </summary>
|
| | | public static event UnityAction<uint> OnLockTargetChanged;
|
| | | /// <summary>
|
| | | /// 当用户点击了技能按钮, 并切技能可以释放的时候调用
|
| | | /// </summary>
|
| | | public static event UnityAction<int> OnUserClickSkill;
|
| | | public static event UnityAction<uint, string> OnKillPlayer;
|
| | |
|
| | | private GameObject m_Light;
|
| | |
| | | && !IsDaZuo()
|
| | | && State != E_ActorState.Roll
|
| | | && !s_MapSwitching
|
| | | && !heavenBattleModel.IsBattlePrepare;
|
| | | && !heavenBattleModel.IsBattlePrepare
|
| | | && !m_Beating;
|
| | | }
|
| | |
|
| | | public bool CanCastSkill()
|
| | |
| | | && State != E_ActorState.Roll
|
| | | && State != E_ActorState.Mocked
|
| | | && !s_MapSwitching
|
| | | && !heavenBattleModel.IsBattlePrepare;
|
| | | && !heavenBattleModel.IsBattlePrepare
|
| | | && !m_Beating;
|
| | | }
|
| | |
|
| | | public void StopAll()
|
| | |
| | | }
|
| | |
|
| | | Behaviour.StartKillUntilDieAI();
|
| | |
|
| | | if (OnUserClickSkill != null)
|
| | | {
|
| | | OnUserClickSkill(0);
|
| | | }
|
| | | }
|
| | |
|
| | | public void CastSkill(int skillID)
|
| | |
| | | }
|
| | |
|
| | | Behaviour.StartKillUntilDieAI(skillID);
|
| | |
|
| | | if (OnUserClickSkill != null)
|
| | | {
|
| | | OnUserClickSkill(skillID);
|
| | | }
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
| | | private float m_BeatStartTime;
|
| | | protected bool m_Beating;
|
| | | private Vector3 m_BeatDirection;
|
| | | private bool m_PushOrPull;
|
| | | private uint m_AttackerSID;
|
| | | private float m_LimitDistance;
|
| | |
|
| | | public void StartBeatBack(int configID, Vector3 direction)
|
| | | public void StartBeatBack(uint attacker, int configID, Vector3 direction)
|
| | | {
|
| | | SoBodyControl _config = ScriptableObjectLoader.LoadSoBodyControl(configID);
|
| | |
|
| | | if (_config == null || _config.curve == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | m_AttackerSID = attacker;
|
| | | m_LimitDistance = _config.limitDistance;
|
| | | m_PushOrPull = _config.pushOrPull;
|
| | |
|
| | | if (!m_PushOrPull)
|
| | | {
|
| | | direction = -direction;
|
| | | }
|
| | |
|
| | | m_BeatDirection = direction;
|
| | |
| | | Vector3 _pos = m_StartBeatPos + _h + _v;
|
| | | Vector3 _end = _pos;
|
| | |
|
| | | GActor _attacker = GAMgr.Instance.GetBySID(m_AttackerSID);
|
| | |
|
| | | float _dis = MathUtility.DistanceSqrtXZ(_attacker.Pos, _end);
|
| | |
|
| | | if (m_PushOrPull)
|
| | | {
|
| | | if (MathUtility.DistanceSqrtXZ(_attacker.Pos, _end) > m_LimitDistance * m_LimitDistance)
|
| | | {
|
| | | _end = _attacker.Pos + m_BeatDirection * m_LimitDistance;
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | Vector3 _limPos = _attacker.Pos;
|
| | | _limPos.y = 0;
|
| | | _limPos = _limPos - m_BeatDirection * m_LimitDistance;
|
| | | Vector3 _dir2 = (_end - _limPos).normalized;
|
| | |
|
| | | bool _isOp = MathUtility.OppositeDir(-m_BeatDirection, _dir2);
|
| | | bool _isLimDis = MathUtility.DistanceSqrtXZ(_attacker.Pos, _end) < m_LimitDistance * m_LimitDistance;
|
| | |
|
| | | if (_isOp
|
| | | || _isLimDis)
|
| | | {
|
| | | _end = _attacker.Pos - m_BeatDirection * m_LimitDistance;
|
| | | needSyncGroundHeight = true;
|
| | | m_Beating = false;
|
| | | }
|
| | | }
|
| | |
|
| | | Vector3 _position = m_StartBeatPos;
|
| | | _position.y = 0;
|
| | | _end.y = 0;
|
| | |
| | | protected HeadUpName m_HeadUpName = null;
|
| | |
|
| | | private int m_HorseActionType = 0;
|
| | | public int nextComAtkIndex = -1;
|
| | |
|
| | | public JobSetupConfig JobSetup { get; protected set; }
|
| | |
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | public int nextComAtkIndex = -1;
|
| | |
|
| | | public void SwitchHeadNameBindNode(bool castingSkill)
|
| | | {
|
| | | // 角色被隐藏状态下不执行头顶名称切换逻辑
|
| | |
| | | {
|
| | | m_HeadUpName.target = MP_Name;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | public bool IsPolyMorph { get; private set; }
|
| | | private GameObject m_SheepModel;
|
| | | private bool m_SheepIsDefaultNpc;
|
| | | public virtual void Polymorph(bool doOrNo)
|
| | | {
|
| | | IsPolyMorph = doOrNo;
|
| | |
|
| | | if (IsPolyMorph)
|
| | | {
|
| | | ChangeBinderToRoot();
|
| | |
|
| | | // 正在骑乘状态下
|
| | | if (MovingState == E_MovingState.Ride)
|
| | | {
|
| | | m_HorseModel.transform.position = Constants.Special_Hide_Position;
|
| | | SwitchHorse(0);
|
| | | DTC0428_tagPlayerRideHorse.Send_tagPlayerRideHorse(false);
|
| | | }
|
| | | else
|
| | | {
|
| | | m_ClothesModel.transform.position = Constants.Special_Hide_Position;
|
| | | }
|
| | |
|
| | | m_SheepIsDefaultNpc = false;
|
| | | var _p = InstanceResourcesLoader.LoadNpc(10101001);
|
| | | if (_p == null)
|
| | | {
|
| | | _p = InstanceResourcesLoader.LoadDefaultFightNPC();
|
| | | m_SheepIsDefaultNpc = true;
|
| | | }
|
| | |
|
| | | m_SheepModel = GameObjectPoolManager.Instance.RequestGameObject(_p);
|
| | | m_SheepModel.transform.SetParent(m_Root);
|
| | |
|
| | | var _a = m_SheepModel.GetComponent<Animator>();
|
| | | if (_a)
|
| | | {
|
| | | _a.enabled = true;
|
| | | _a.SetInteger(GAStaticDefine.Param_ActorInstID, (int)ClientInstID);
|
| | | m_ClothesAnimator.enabled = false;
|
| | | m_ClothesAnimator = _a;
|
| | | }
|
| | |
|
| | | if (ShowOrHide)
|
| | | {
|
| | | m_SheepModel.transform.localPosition = Vector3.zero;
|
| | | }
|
| | | else
|
| | | {
|
| | | m_SheepModel.transform.localPosition = Constants.Special_Hide_Position;
|
| | | }
|
| | |
|
| | | m_SheepModel.transform.localRotation = Quaternion.identity;
|
| | | }
|
| | | else
|
| | | {
|
| | | if (m_SheepModel)
|
| | | {
|
| | | if (m_SheepIsDefaultNpc)
|
| | | {
|
| | | GameObjectPoolManager.Instance.ReleaseDefaultFightNPC(m_SheepModel);
|
| | | }
|
| | | else
|
| | | {
|
| | | var _prefab = InstanceResourcesLoader.LoadNpc(10101001);
|
| | | GameObjectPoolManager.Instance.ReleaseGameObject(_prefab, m_SheepModel);
|
| | | }
|
| | | }
|
| | |
|
| | | m_SheepModel = null;
|
| | | m_ClothesModel.transform.localPosition = Vector3.zero;
|
| | |
|
| | | ChangeBinderToClothes();
|
| | |
|
| | | m_ClothesAnimator = m_ClothesModel.GetComponent<Animator>();
|
| | | m_ClothesAnimator.enabled = true;
|
| | | m_ClothesAnimator.SetInteger(GAStaticDefine.Param_ActorInstID, (int)ClientInstID);
|
| | | m_ClothesAnimator.SetInteger(GAStaticDefine.Param_MoveState, (int)E_MovingState.Normal);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | }
|
| | | if (ShowOrHide)
|
| | | {
|
| | | m_ClothesModel.transform.localPosition = Vector3.zero;
|
| | | m_ClothesModel.transform.localRotation = Quaternion.identity;
|
| | | if (!IsPolyMorph)
|
| | | {
|
| | | m_ClothesModel.transform.localPosition = Vector3.zero;
|
| | | m_ClothesModel.transform.localRotation = Quaternion.identity;
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | |
| | | if (m_WingModel)
|
| | | {
|
| | | MovingState = E_MovingState.Fly;
|
| | | m_ClothesAnimator.SetInteger(GAStaticDefine.Param_MoveState, (int)E_MovingState.Fly);
|
| | | if (!IsPolyMorph)
|
| | | {
|
| | | m_ClothesAnimator.SetInteger(GAStaticDefine.Param_MoveState, (int)E_MovingState.Fly);
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | MovingState = E_MovingState.Normal;
|
| | | m_ClothesAnimator.SetInteger(GAStaticDefine.Param_MoveState, (int)E_MovingState.Normal);
|
| | | if (!IsPolyMorph)
|
| | | {
|
| | | m_ClothesAnimator.SetInteger(GAStaticDefine.Param_MoveState, (int)E_MovingState.Normal);
|
| | | }
|
| | | }
|
| | |
|
| | | SwitchHeadNameBindNode(false);
|
| | |
| | | _model2.clickClosed = false;
|
| | |
|
| | | m_AfterAttackType = E_AfterAttackType.RefreshRock;
|
| | | GA_Hero.OnUserClickSkill += OnCastSkill;
|
| | | HeroBehaviour.OnUserClickSkill += OnCastSkill;
|
| | |
|
| | | _model2.onClose = null;
|
| | |
|
| | |
| | |
|
| | | private void OnCastSkill(int skillID)
|
| | | {
|
| | | GA_Hero.OnUserClickSkill -= OnCastSkill;
|
| | | HeroBehaviour.OnUserClickSkill -= OnCastSkill;
|
| | |
|
| | | if (m_AfterAttackType == E_AfterAttackType.RefreshRock)
|
| | | {
|
| | |
| | | return (target - self).normalized; |
| | | } |
| | | |
| | | public static bool IsSameDir(Vector3 vec1, Vector3 vec2) |
| | | { |
| | | vec1.y = 0; |
| | | vec2.y = 0; |
| | | |
| | | return Vector3.Dot(vec1, vec2) > 0; |
| | | } |
| | | |
| | | public static bool OppositeDir(Vector3 vec1, Vector3 vec2) |
| | | { |
| | | vec1.y = 0; |
| | | vec2.y = 0; |
| | | |
| | | return Vector3.Dot(vec1, vec2) < 0; |
| | | } |
| | | public static int Power(int a, int e) |
| | | { |
| | | int value = 1; |
| | |
| | |
|
| | | if (GUILayout.Button("酷酷酷"))
|
| | | {
|
| | |
|
| | | PlayerDatas.Instance.hero.Polymorph(!PlayerDatas.Instance.hero.IsPolyMorph);
|
| | | }
|
| | |
|
| | | if (GUILayout.Button("直接重连"))
|