少年修仙传客户端代码仓库
client_Hale
2019-04-16 1f69344e83ade796731904b21e0668d5378817fe
382 新增前端NPCAI类型逃离
4个文件已修改
121 ■■■■■ 已修改文件
Fight/Actor/AI/AI_Npc_198.cs 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/AI/SampleAI.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_NpcClientFightNorm.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/RuntimeLogUtility.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/AI/AI_Npc_198.cs
@@ -16,9 +16,16 @@
        m_Owner.OnAttacked -= OnAttacked;
    }
    private float m_LastBeAtkedTime = 0;
    public void OnAttacked()
    {
        if (m_AIStatus != E_AIStatus.RunAway)
        {
            m_AIStatus = E_AIStatus.RunAway;
            m_RunAwayStep = 0;
        }
        m_LastBeAtkedTime = Time.realtimeSinceStartup;
    }
    public override void Update()
@@ -32,10 +39,13 @@
        switch (m_AIStatus)
        {
            case E_AIStatus.Patrol:
                _Patrol();
                break;
            case E_AIStatus.MoveToBornPos:
                MoveToBornPos();
                break;
            case E_AIStatus.RunAway:
                _RunAway();
                break;
        }
    }
@@ -49,8 +59,22 @@
        {
            case 0:
                // 选择一个逃跑点
                var _nextForawrd = Random.rotation * m_Owner.Forward;
                var _randomDis = Random.Range(0, m_Owner.NpcConfig.Sight * .5f);
                m_Dest = m_Owner.BornPos + _nextForawrd * _randomDis;
                m_RunAwayStep = 1;
                break;
            case 1:
                var _conmareDis = MathUtility.DistanceSqrtXZ(m_Owner.Pos, m_Dest);
                if (_conmareDis > .5f)
                {
                    m_Owner.MoveToPosition(m_Dest);
                }
                else
                {
                    m_RunAwayStep = 0;
                    m_AIStatus = E_AIStatus.Idle;
                }
                break;
        }
    }
@@ -79,6 +103,76 @@
        else
        {
            _compareDis = MathUtility.DistanceSqrtXZ(m_Owner.Pos, BornPos);
            if (_compareDis > m_KeepBornDistSqrt)
            {
                m_AIStatus = E_AIStatus.MoveToBornPos;
            }
            else
            {
                if (m_AIStatus != E_AIStatus.RunAway
                 && m_AIStatus != E_AIStatus.Idle)
                {
                    m_AIStatus = E_AIStatus.Patrol;
                }
            }
        }
        if (m_AIStatus == E_AIStatus.Idle)
        {
            if (Time.realtimeSinceStartup - m_LastBeAtkedTime > 5)
            {
                m_AIStatus = E_AIStatus.Patrol;
            }
        }
    }
    private void MoveToBornPos()
    {
        var _dis = MathUtility.DistanceSqrtXZ(m_Owner.Pos, BornPos);
        if (_dis > 0.1f)
        {
            m_Owner.MoveToPosition(BornPos);
        }
        else
        {
            m_AIStatus = E_AIStatus.Patrol;
        }
    }
    private byte patrolStep;
    private float patrolWaitTime;
    private float patrolWaitRandomTime;
    private Vector3 randomPos;
    private void _Patrol()
    {
        if (m_AIStatus == E_AIStatus.MoveToBornPos)
        {
            return;
        }
        switch (patrolStep)
        {
            case 0:
                patrolWaitRandomTime = Random.Range(2f, 4f);
                patrolWaitTime = Time.realtimeSinceStartup;
                patrolStep = 1;
                break;
            case 1:
                if (Time.realtimeSinceStartup - patrolWaitTime > patrolWaitRandomTime)
                {
                    patrolStep = 2;
                    patrolWaitTime = Time.realtimeSinceStartup;
                    randomPos = BornPos + new Vector3(Random.Range(-2f, 2f), 0, Random.Range(-2f, 2f));
                    GActor.TryGetValidPos(randomPos, ref randomPos);
                    m_Owner.MoveToPosition(randomPos);
                }
                break;
            case 2:
                if (Time.realtimeSinceStartup - patrolWaitTime > 2)
                {
                    patrolStep = 1;
                }
                break;
        }
    }
}
Fight/Actor/AI/SampleAI.cs
@@ -5,6 +5,7 @@
{
    protected enum E_AIStatus
    {
        Idle,
        Patrol,// 巡逻
        MoveToTarget,// 向目标移动
        Attack,// 攻击
@@ -31,8 +32,6 @@
    {
        m_Owner = owner;
        BornPos = bornPosition;
        m_KeepBornDistSqrt = 5 * 5;
        // NPC类型的视野读取配置
        m_KeepBornDistSqrt = m_Owner.NpcConfig.Sight * .5f;
Fight/GameActor/GA_NpcClientFightNorm.cs
@@ -94,6 +94,10 @@
        {
            m_AIHandler = new AI_Npc_200(this, BornPos);
        }
        else if (NpcConfig.AIType == 198)
        {
            m_AIHandler = new AI_Npc_198(this, BornPos);
        }
        heroAttacked = false;
    }
Utility/RuntimeLogUtility.cs
@@ -243,16 +243,16 @@
        if (GUILayout.Button("创建PVP敌方"))
        {
            // var _npc = GAMgr.Instance.ReqClntFightNpc<GA_NpcClientFightBoss>(30902001, E_ActorGroup.Enemy);
            // _npc.BornPos = _npc.Pos = PlayerDatas.Instance.hero.Pos;
            // _npc.ActorInfo.ResetHp(200, -1, 200);
            var _npc = GAMgr.Instance.ReqClntFightNpc<GA_NpcClientFightNorm>(30102003, E_ActorGroup.Enemy);
            _npc.BornPos = _npc.Pos = PlayerDatas.Instance.hero.Pos;
            _npc.ActorInfo.ResetHp(9999999, -1, 9999999);
            ClientDropItemUtility.Instance.Drop(PlayerDatas.Instance.hero.Pos,
                                                new int[] { 5006, 5301, 5410, 5505, 10543, 1043050,
                                                            5301, 5410, 5505, 10543, 1043050,
                                                            5301, 5410, 5505, 10543, 1043050,
                                                            5301, 5410, 5505, 10543, 1043050,
                                                            5301, 5410, 5505, 10543, 1043050 });
            // ClientDropItemUtility.Instance.Drop(PlayerDatas.Instance.hero.Pos,
            //                                     new int[] { 5006, 5301, 5410, 5505, 10543, 1043050,
            //                                                 5301, 5410, 5505, 10543, 1043050,
            //                                                 5301, 5410, 5505, 10543, 1043050,
            //                                                 5301, 5410, 5505, 10543, 1043050,
            //                                                 5301, 5410, 5505, 10543, 1043050 });
            // var _npc = GAMgr.Instance.ReqClntFightNpc<GA_NpcClientFightBoss>(10103001, E_ActorGroup.Enemy);