// Update is called once per frame void FixedUpdate() { DijkstraTile currentTile = worldGrid.NodeFromWorldPoint(agentPosition.position); if (this.lastValidTile == null) { this.lastValidTile = currentTile; } if (currentTile.getFlowFieldVector().Equals(Vector2Int.zero)) { Vector2Int flowVector = this.lastValidTile.getVector2d() - currentTile.getVector2d(); Vector3 moveDir = new Vector3(flowVector.x, 0, flowVector.y).normalized; rb.AddForce(moveDir * Time.deltaTime * force, ForceMode.Force); //transform.position += moveDir * Time.deltaTime; } else { this.lastValidTile = currentTile; Vector2Int flowVector = currentTile.getFlowFieldVector(); Vector3 moveDir = new Vector3(flowVector.x, 0, flowVector.y).normalized; rb.AddForce(moveDir * Time.deltaTime * force, ForceMode.Force); } }