| Fight/GameActor/GA_Player.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Fight/GameActor/GA_PlayerOffLine.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Fight/GameActor/GA_PlayerOffLine.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Fight/GameActor/GA_Player.cs
@@ -9,23 +9,14 @@ // 为守护特殊定义的当前是否装备守护id public int serverGuardId; // 简易的脱机挂AI草稿 // 步骤 1. 寻点 2. 移动至 3. 放个普攻 private byte m_Step; private Vector3 m_DestPos; private Vector3 m_RecordBornPos; private float m_WaitTime; public static UnityAction<uint, bool> s_OnSelected; public static UnityAction<uint, ulong, ulong> s_OnRefreshLife; private H0434_tagAreaPlayerAppearEx m_H0434; protected H0434_tagAreaPlayerAppearEx m_H0434; private CmdManager m_CmdManager; private int m_ComAtkIndex;// 普攻索引 private Skill m_CastSkill;// 要释放的技能 protected sealed override void OnInit(GameNetPackBasic package) protected override void OnInit(GameNetPackBasic package) { m_H0434 = package as H0434_tagAreaPlayerAppearEx; @@ -157,12 +148,6 @@ RequestName(); m_CmdManager = new CmdManager(); if (m_H0434.State == 1) { m_RecordBornPos = Pos; m_Step = 0; } } protected sealed override void OnUnit() @@ -183,151 +168,13 @@ { } protected sealed override void OnUpdate() protected override void OnUpdate() { base.OnUpdate(); if (m_CmdManager != null) { m_CmdManager.Update(); } // 脱机挂 if (m_H0434.State == 1) { switch (m_Step) { 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); if (SelectTarget == null) { SelectTarget = GAMgr.Instance.GetCloserFightNpc(Pos); } if (SelectTarget != null) { destForward = Forward = MathUtility.ForwardXZ(SelectTarget.Pos, Pos); } m_Step = 1; break; case 1: m_CastSkill = null; for (int i = 0; i < JobSetup.HangupSkillList.Length; ++i) { if (SkillMgr.Get(JobSetup.HangupSkillList[i]).IsValid()) { m_CastSkill = SkillMgr.Get(JobSetup.HangupSkillList[i]); break; } } if (m_CastSkill == null) { 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: 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; case 3: if (IsIdle()) { m_Step = 0; } break; } } } Fight/GameActor/GA_PlayerOffLine.cs
New file @@ -0,0 +1,167 @@ using UnityEngine; public class GA_PlayerOffLine : GA_Player { // 简易的脱机挂AI草稿 // 步骤 1. 寻点 2. 移动至 3. 放个普攻 private byte m_Step; private Vector3 m_DestPos; private Vector3 m_RecordBornPos; private float m_WaitTime; private int m_ComAtkIndex;// 普攻索引 private Skill m_CastSkill;// 要释放的技能 protected sealed override void OnInit(GameNetPackBasic package) { base.OnInit(package); if (m_H0434.State == 1) { m_RecordBornPos = Pos; m_Step = 0; } } protected sealed override void OnUpdate() { base.OnUpdate(); // 脱机挂 if (m_H0434.State == 1) { switch (m_Step) { 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); if (SelectTarget == null) { SelectTarget = GAMgr.Instance.GetCloserFightNpc(Pos); } if (SelectTarget != null) { destForward = Forward = MathUtility.ForwardXZ(SelectTarget.Pos, Pos); } m_Step = 1; break; case 1: m_CastSkill = null; for (int i = 0; i < JobSetup.HangupSkillList.Length; ++i) { if (SkillMgr.Get(JobSetup.HangupSkillList[i]).IsValid()) { m_CastSkill = SkillMgr.Get(JobSetup.HangupSkillList[i]); break; } } if (m_CastSkill == null) { 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: 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; case 3: if (IsIdle()) { m_Step = 0; } break; } } } } Fight/GameActor/GA_PlayerOffLine.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 2f3feddd674d7c448880d7b2b4c91e64 timeCreated: 1536378358 licenseType: Free MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: