public void TickMovement() { if (m_TargetNode == null) { return; } Vector3 target = m_TargetNode.Position; Vector3 position = m_Transform.position; // Needed for calculating position on the grid target.y = position.y; Node currentNode = m_Grid.GetNodeAtPoint(position); float distance = (target - position).sqrMagnitude; if (currentNode != m_CurrentNode) { m_CurrentNode.EnemyDatas.Remove(m_EnemyData); m_CurrentNode = currentNode; m_CurrentNode.EnemyDatas.Add(m_EnemyData); } if (distance < TOLERANCE) { m_TargetNode = m_TargetNode.NextNode; return; } Vector3 dir = (target - position).normalized; Vector3 delta = dir * (m_Speed * Time.deltaTime); m_Transform.Translate(delta); }
public void TickMovement() { if (m_TargetNode == null) { return; } Vector3 targetNodePosition = m_TargetNode.Position; Vector3 currentPosition = m_Transform.position; Vector3 target = new Vector3(targetNodePosition.x, currentPosition.y, targetNodePosition.z); float distance = (target - currentPosition).magnitude; if (distance < TOLERANCE) { m_TargetNode = m_TargetNode.NextNode; return; } Vector3 dir = (target - m_Transform.position).normalized; Vector3 delta = dir * (m_Speed * Time.deltaTime); m_Transform.Translate(delta); Node nextNode = m_Grid.GetNodeAtPoint(m_Transform.position); if (nextNode != m_CurrentNode) { nextNode?.EnemyDatas.Add(m_Data); m_CurrentNode?.EnemyDatas.Remove(m_Data); m_CurrentNode = nextNode; } }
public GridMovementAgent(float speed, Transform transform, Grid grid, EnemyData data) { m_Speed = speed; m_Transform = transform; m_Data = data; m_Grid = grid; m_CurrentNode = grid.GetNodeAtPoint(transform.position); SetTargetNode(grid.GetStartNode()); }
public GridMovementAgent(float speed, Transform transform, Grid grid, EnemyData enemyData) { m_Speed = speed; m_Transform = transform; m_EnemyData = enemyData; SetStartNode(grid.GetStartNode()); m_TargetNode.EnemyDatas.Add(m_EnemyData); m_Grid = grid; m_CurrentNode = m_Grid.GetNodeAtPoint(m_Transform.position); }