public static void InitializeData(int protoId, string btPath) { TextAsset asset = UnityEngine.Resources.Load(btPath) as TextAsset; if (asset != null && !string.IsNullOrEmpty(asset.text)) { XmlDocument xmlDoc = new XmlDocument(); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; XmlReader reader = XmlReader.Create(new StringReader(asset.text), settings); xmlDoc.Load(reader); XmlElement root = xmlDoc.SelectSingleNode("Tree") as XmlElement; XmlNodeList xmlNodeList = root.GetElementsByTagName("Action"); foreach (XmlNode node in xmlNodeList) { XmlElement e = node as XmlElement; string typeName = XmlUtil.GetAttributeString(e, "Type"); if (typeName.Equals("Pounce")) { PounceData _dat = new PounceData(e); m_Data.Add(protoId, _dat); break; } } } }
IEnumerator Epounce(float time, Vector3 targetPos) { if (Entity == null || m_Move == null || Entity.animCmpt == null) { yield break; } PounceData m_Data = null; if (!MonsterXmlData.GetData <PounceData>(Entity.ProtoID, ref m_Data)) { yield break; } float _speed = (PETools.PEUtil.MagnitudeH(Entity.position, targetPos) + 1f) / (m_Data._endTime - m_Data._startTime); while (Time.time - time < m_Data._startTime) { m_Move.Stop(); yield return(null); } while (Time.time - time <= m_Data._endTime) { m_Move.SetSpeed(_speed); m_Move.Move(Entity.forward); Vector3 m_Direction = targetPos - Entity.position; Vector3 m_DirectionXZ = Vector3.ProjectOnPlane(m_Direction, Vector3.up); m_Move.RotateTo(m_DirectionXZ); yield return(null); } ResetMonster(); yield return(null); }