示例#1
0
文件: Player.cs 项目: MrP78/MIniWar
    public void Attack()
    {
        menu.value = -1;
        moveChecker.ClearFree();
        moveChecker.CheckAvaliable(this.transform.position, 1);

        int R = CheckRange();

        if (gather.selectedTargetPos.x < this.transform.position.x)
        {
            gameObject.transform.localScale = new Vector3(-1, transform.localScale.y);
        }
        if (gather.selectedTargetPos.x > this.transform.position.x)
        {
            gameObject.transform.localScale = new Vector3(1, transform.localScale.y);
        }

        if (moveChecker.IsOccupied(gather.selectedTargetPos.x, gather.selectedTargetPos.y))
        {
            anim.SetTrigger("attackTrigger");
        }
        else if (atri.shooting > 0 && atri.range >= R)
        {
            anim.SetTrigger("rangedAttackTrigger");
        }
        else
        {
            turnover.SetMessage(("Target out of range"), 0.75f);
            done = true;
        }
    }
示例#2
0
文件: AI.cs 项目: MrP78/MIniWar
    private void CalculatePositionToMoveTo()
    {
        moveChecker.ClearFree();
        moveChecker.CheckAvaliable(currentPlayerPosition, 1);

        if (moveChecker.IsOccupied(enemys[0].enemyObject.transform.position.x, enemys[0].enemyObject.transform.position.y))
        {
            proposedPos = new Vector2(currentPlayer.transform.position.x, currentPlayer.transform.position.y);
        }
        else if (((int)currentPlayerPosition.x + currentPlayer.moves) + currentPlayer.GetComponent <CharacterAtributes>().range >= enemys[0].enemyObject.transform.position.x)
        {
            moveChecker.ClearFree();
            moveChecker.CheckAvaliable(currentPlayerPosition, currentPlayer.moves);

            int b = ((int)enemys[0].enemyObject.transform.position.x - (int)currentPlayerPosition.x) - currentPlayer.GetComponent <CharacterAtributes>().range;
            proposedPos = new Vector2(currentPlayerPosition.x + b, enemys[0].enemyObject.transform.position.y);
            //if((proposedPos.x == currentPlayerPosition.x)&& enemys[0].enemyObject.transform.position.y == currentPlayerPosition.y)
            //{
            //   proposedPos = new Vector2(currentPlayerPosition.x, currentPlayerPosition.y);
            // }
        }
        else
        {
            moveChecker.ClearFree();
            moveChecker.CheckAvaliable(currentPlayerPosition, currentPlayer.moves);
            proposedPos = new Vector2(currentPlayerPosition.x + currentPlayer.moves, enemys[0].enemyObject.transform.position.y);
            // print(currentPlayer.name + " " + enemys[0].enemyName);
        }
        MoveToNewPosition();
    }
示例#3
0
    void OnMouseDown()
    {
        Vector2 rawPos = CalculateWorldPointOfMouseClick();

        roundedPos = SnapToGrid(rawPos);

        foreach (Player player in players)
        {
            if (player.IsMoving)
            {
                currentPlayer         = player;
                currentPlayerPosition = player.transform.position;
                if (moveChecker.IsFree(roundedPos.x, roundedPos.y))

                {
                    int m;
                    int n1 = Mathf.Abs((int)player.transform.position.x - (int)roundedPos.x);
                    int n2 = Mathf.Abs((int)player.transform.position.y - (int)roundedPos.y);
                    if (n1 > n2)
                    {
                        m = n1;
                    }
                    else if (n1 < n2)
                    {
                        m = n2;
                    }
                    else
                    {
                        m = n2;
                    }
                    moving = true;
                    player.SetAniBool("isWalking", true);
                    player.moves -= m;
                    moveChecker.ClearFree();
                    GameObject[] boxes = GameObject.FindGameObjectsWithTag("box");
                    foreach (GameObject box in boxes)
                    {
                        Destroy(box);
                    }
                }
            }
        }
    }