Ejemplo n.º 1
0
    void AttackSomeone()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Vector2 ray2dOrigin;
            Vector2 ray2dDirection;

            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            ray2dOrigin    = ray.origin;
            ray2dDirection = ray.direction;
            LayerMask    mask = LayerMask.GetMask("character");
            RaycastHit2D hit  = Physics2D.Raycast(ray2dOrigin, ray2dDirection);

            if (hit.collider)
            {
                // collider check for enemy unit to attack -Arkell
                if (hit.collider.CompareTag("Enemy"))
                {
                    HurtEnemyUnit.Attack(hit);
                }
                HasAttacked();
                ActiveState();
            }
        }
    }
Ejemplo n.º 2
0
    void AttackSomeone()
    {
        if (Input.GetMouseButtonDown(0))
        {
            LayerMask      mask = LayerMask.GetMask("character");
            RaycastHit2D[] hit  = Physics2D.RaycastAll(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero, mask);

            if (hit[0])
            {
                /* if (hit[0].collider.CompareTag("Tile"))
                 * {
                 *   Tiles tiles = hit[0].collider.GetComponent<Tiles>();
                 *   if (tiles.selectable)
                 *   {
                 *
                 *   }
                 * }*/


                //Debug.Log(hit[0].collider.tag);
                foreach (RaycastHit2D colliderHit in hit)
                {
                    Debug.Log(colliderHit.collider.tag);
                    if (colliderHit.collider.CompareTag("Enemy"))
                    {
                        HurtEnemyUnit.Attack(colliderHit);
                        HasAttacked();
                        ActiveState();
                    }
                }
                // collider check for enemy unit to attack -Arkell

                /*if (hit[0].collider.CompareTag("Enemy"))
                 * {
                 *
                 *  HurtEnemyUnit.Attack(hit[0]);
                 *  HasAttacked();
                 *  ActiveState();
                 * }*/
                //HasAttacked();
                //ActiveState();
            }
        }
    }
Ejemplo n.º 3
0
    void AttackSomeone()
    {
        if (Input.GetMouseButtonDown(0))
        {
            LayerMask    mask = LayerMask.GetMask("character");
            RaycastHit2D hit  = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);

            if (hit.collider)
            {
                Debug.Log(hit.collider.tag);

                // collider check for enemy unit to attack -Arkell
                if (hit.collider.CompareTag("Enemy"))
                {
                    HurtEnemyUnit.Attack(hit);
                    HasAttacked();
                    ActiveState();
                }
                //HasAttacked();
                //ActiveState();
            }
        }
    }
Ejemplo n.º 4
0
    protected void FindPath(Tiles target)
    {
        ComputeAdjacencyList(target);
        GetCurrentTile();



        List <Tiles> openList   = new List <Tiles>();
        List <Tiles> closedList = new List <Tiles>();

        openList.Add(currentTile);
        //currentTile.parent = ??
        currentTile.h = Vector2.Distance(currentTile.transform.position, target.transform.position);
        currentTile.f = currentTile.h;

        while (openList.Count > 0)
        {
            Tiles t = FindLowestF(openList);

            closedList.Add(t);
            if (state == State.Move)
            {
                if (t == target)
                {
                    actualTargetTile = FindEndTile(t);
                    RaycastHit2D[] hit = Physics2D.RaycastAll(actualTargetTile.transform.position, Vector2.zero, LayerMask.GetMask("character"));
                    if (hit[0].collider.CompareTag("Enemy"))
                    {
                        //Debug.Log(hit[0].collider.tag);
                        moving = true;
                        return;
                    }
                    MoveToTile(actualTargetTile);
                    return;
                }
            }

            if (state == State.Attack)
            {
                if (t == target)
                {
                    actualTargetTile        = FindAttackEndTile(t);
                    actualTargetTile.target = true;
                    RaycastHit2D[] hit = Physics2D.RaycastAll(actualTargetTile.transform.position, Vector2.zero, LayerMask.GetMask("character"));
                    if (hit[0].collider.CompareTag("Player"))
                    {
                        if (hit[0])
                        {
                            HurtEnemyUnit.Attack(hit[0]);

                            EndturnState();
                        }

                        //return;
                    }
                    else
                    {
                        EndturnState();
                        return;
                    }
                    //Attack(actualTargetTile);
                    return;
                }
            }


            foreach (Tiles tile in t.adjacencyList)
            {
                if (closedList.Contains(tile))
                {
                    //Do nothing
                }
                else if (openList.Contains(tile))
                {
                    float tempG = t.g + Vector2.Distance(tile.transform.position, t.transform.position);

                    if (tempG < tile.g)
                    {
                        tile.parent = t;
                        tile.g      = tempG;
                        tile.f      = tile.g + tile.h;
                    }
                }
                else
                {
                    tile.parent = t;
                    tile.g      = t.g + Vector2.Distance(tile.transform.position, t.transform.position);
                    tile.h      = Vector2.Distance(tile.transform.position, target.transform.position);
                    tile.f      = tile.g + tile.h;

                    openList.Add(tile);
                }
            }
        }

        // we will just skip the turn

        //todo - what happens if there is no path to the target tile
    }