少年修仙传客户端代码仓库
leonard Wu
2018-08-03 c2d2d5d3a840bf50968b3f95e304929bc62a7b70
Fight/GameActor/GA_Player.cs
@@ -19,6 +19,8 @@
    private H0434_tagAreaPlayerAppearEx m_H0434;
    private CmdManager m_CmdManager;
    private int m_ComAtkIndex;// 普攻索引
    private Skill m_CastSkill;// 要释放的技能
    protected sealed override void OnInit(GameNetPackBasic package)
    {
@@ -193,30 +195,122 @@
            {
                case 0:
                    m_DestPos = m_RecordBornPos + Quaternion.Euler(0, Random.Range(0, 359), 0) * Vector3.forward * Random.Range(1f, 2f);
                    TryGetValidPos(m_DestPos, ref m_DestPos);
                    //m_DestPos = m_RecordBornPos + Quaternion.Euler(0, Random.Range(0, 359), 0) * Vector3.forward * Random.Range(1f, 2f);
                    //TryGetValidPos(m_DestPos, ref m_DestPos);
                    if (SelectTarget == null)
                    {
                        SelectTarget = GAMgr.Instance.GetCloserFightNpc(Pos);
                    }
                    if (SelectTarget != null)
                    {
                        destForward = Forward = MathUtility.ForwardXZ(SelectTarget.Pos, Pos);
                    }
                    m_Step = 1;
                    break;
                case 1:
                    float _distSqrt = MathUtility.DistanceSqrtXZ(Pos, m_DestPos);
                    if (_distSqrt > 0.25f)
                    m_CastSkill = null;
                    for (int i = 0; i < JobSetup.HangupSkillList.Length; ++i)
                    {
                        if (State != E_ActorState.AutoRun)
                        if (SkillMgr.Get(JobSetup.HangupSkillList[i]).IsValid())
                        {
                            MoveToPosition(m_DestPos);
                            m_CastSkill = SkillMgr.Get(JobSetup.HangupSkillList[i]);
                            break;
                        }
                    }
                    else
                    if (m_CastSkill == null)
                    {
                        m_Step = 2;
                        if (m_ComAtkIndex > JobSetup.ComAtkIdList.Length - 1)
                        {
                            m_ComAtkIndex = 0;
                        }
                        int _comSkillId = JobSetup.ComAtkIdList[m_ComAtkIndex];
                        m_CastSkill = SkillMgr.Get(_comSkillId);
                        m_ComAtkIndex += 1;
                    }
                    m_Step = 2;
                    break;
                case 2:
                    Play(GAStaticDefine.State_Attack1Hash);
                    if (m_CastSkill != null)
                    {
                        SkillMgr.CastSkill(ServerInstID, m_CastSkill.id, true);
                        Vector3 _targetPosition = Pos + Forward * (m_CastSkill.skillInfo.config.AtkDist * .5f);
                        _targetPosition.y = 0;
                        UnityEngine.AI.NavMeshHit _navMeshHit;
                        if (UnityEngine.AI.NavMesh.Raycast(Pos, _targetPosition, out _navMeshHit, -1))
                        {
                            _targetPosition = _navMeshHit.position;
                        }
                        _targetPosition.y = Pos.y;
                        m_CastSkill.targetPosition = _targetPosition;
                        if (m_CastSkill.skillInfo.config.Skillactmark > 0
                         && m_CastSkill.skillInfo.config.Skillactmark < 20)
                        {
                            switch (m_CastSkill.skillInfo.config.Skillactmark)
                            {
                                case 10:
                                    Play(GAStaticDefine.State_Attack1Hash, 0);
                                    break;
                                case 11:
                                    Play(GAStaticDefine.State_Attack2Hash, 0);
                                    break;
                                case 12:
                                    Play(GAStaticDefine.State_Attack3Hash, 0);
                                    break;
                                case 13:
                                    Play(GAStaticDefine.State_Attack4Hash, 0);
                                    break;
                            }
                        }
                        else
                        {
                            switch (m_CastSkill.skillInfo.config.Skillactmark)
                            {
                                case 21:
                                    Play(GAStaticDefine.State_Skill21, 0);
                                    break;
                                case 22:
                                    Play(GAStaticDefine.State_Skill22, 0);
                                    break;
                                case 23:
                                    Play(GAStaticDefine.State_Skill23, 0);
                                    break;
                                case 24:
                                    Play(GAStaticDefine.State_Skill24, 0);
                                    break;
                                case 25:
                                    Play(GAStaticDefine.State_Skill25, 0);
                                    break;
                                case 26:
                                    Play(GAStaticDefine.State_Skill26, 0);
                                    break;
                                case 27:
                                    Play(GAStaticDefine.State_Skill27, 0);
                                    break;
                                case 28:
                                    Play(GAStaticDefine.State_Skill28, 0);
                                    break;
                                case 29:
                                    Play(GAStaticDefine.State_Skill29, 0);
                                    break;
                                case 99:
                                    Play(GAStaticDefine.State_RollHash, 0);
                                    break;
                            }
                        }
                    }
                    m_Step = 3;
                    break;
@@ -225,17 +319,7 @@
                    if (IsIdle())
                    {
                        m_Step = 4;
                    }
                    break;
                case 4:
                    m_WaitTime += Time.deltaTime;
                    if (m_WaitTime > 2)
                    {
                        m_Step = 0;
                        m_WaitTime = 0;
                    }
                    break;
@@ -259,7 +343,7 @@
    {
        ActorInfo.moveSpeed = 500f / speed;
        m_StartMove = startOrStop;
        m_TargetPos = pos;
        TryGetValidPos(pos, ref m_TargetPos);
        _dir = MathUtility.ForwardXZ(m_TargetPos, Pos);
        if (m_StartMove)
@@ -529,7 +613,7 @@
            return false;
        }
        if (StatusMgr.Instance.IsInvincible(ServerInstID))
        if (StatusMgr.Instance.IsInvisible(ServerInstID))
        {
            return false;
        }