示例#1
0
        public void TickMovement()
        {
            if (m_TargetNode == null || m_Dead)
            {
                return;
            }

            Vector3 target = m_TargetNode.Position;

            Vector3 dir = target - m_Transform.position;

            dir.y = 0;

            float distance = dir.magnitude;

            if (Grid.InsideOfNode(m_Transform.position, m_TargetNode, m_NodeSize) && !m_TargetNode.EnemyDatas.Contains(m_Data))
            {
                m_PrevNode.EnemyDatas.Remove(m_Data);
                m_TargetNode.EnemyDatas.Add(m_Data);
            }

            if (distance < TOLERANCE)
            {
                m_PrevNode   = m_TargetNode;
                m_TargetNode = m_TargetNode.NextNode;
                return;
            }

            dir = dir.normalized;

            Vector3 delta = dir * (m_Speed * Time.deltaTime);

            m_Transform.Translate(delta);
        }