コード例 #1
0
    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;
                }
            }
        }
    }
コード例 #2
0
        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);
        }