Exemplo n.º 1
0
    //OLD DEFENSE

    /*
     * private void OnTriggerEnter(Collider other)
     * {
     *  Debug.Log("collision?");
     *  if (other.gameObject.tag == "lowCover")
     *  {
     *      Debug.Log("wall collision");
     *      Vector3 targetDir = (other.transform.position - transform.position).normalized;
     *      float angle = Vector3.Angle(targetDir, Vector3.forward);
     *      Vector3 cross = Vector3.Cross(targetDir, Vector3.forward);
     *      Debug.Log(cross.y);
     *      if (cross.y < 0 || cross.y > 0.99)
     *          angle = -angle;
     *      //float angle = Mathf.Atan2(localTarget.x, localTarget.z) * Mathf.Rad2Deg
     *
     *      Debug.DrawRay(transform.position, targetDir, Color.white, 2, false);
     *
     *      Debug.Log("Angle: " + angle);
     *
     *      if (angle <= 45 && angle >= -45)
     *      {
     *          Debug.Log("north");
     *          defenseNorth++;
     *      }
     *      else if (angle >= 45 && angle <= 135)
     *      {
     *          Debug.Log("east");
     *          defenseEast++;
     *      }
     *      else if (angle >= 135 && angle <= 180 || angle <= -135 && angle >= -180)
     *      {
     *          Debug.Log("south");
     *          defenseSouth++;
     *      }
     *      else if (angle >= -135 && angle <= -45)
     *      {
     *          Debug.Log("west");
     *          defenseWest++;
     *      }
     *  }
     * }
     *
     * private void OnTriggerExit(Collider other)
     * {
     *  Debug.Log("collision?");
     *  if (other.gameObject.tag == "lowCover")
     *  {
     *      Debug.Log("wall collision");
     *      Vector3 targetDir = (other.transform.position - transform.position).normalized;
     *      float angle = Vector3.Angle(targetDir, Vector3.forward);
     *      Vector3 cross = Vector3.Cross(targetDir, Vector3.forward);
     *      Debug.Log(cross.y);
     *      if (cross.y < 0 || cross.y > 0.99)
     *          angle = -angle;
     *      //float angle = Mathf.Atan2(localTarget.x, localTarget.z) * Mathf.Rad2Deg
     *
     *      Debug.DrawRay(transform.position, targetDir, Color.black, 2, false);
     *
     *      Debug.Log("Angle: " + angle);
     *
     *      if (angle <= 45 && angle >= -45)
     *      {
     *          Debug.Log("north");
     *          defenseNorth--;
     *      }
     *      else if (angle >= 45 && angle <= 135)
     *      {
     *          Debug.Log("east");
     *          defenseEast--;
     *      }
     *      else if (angle >= 135 && angle <= 180 || angle <= -135 && angle >= -180)
     *      {
     *          Debug.Log("south");
     *          defenseSouth--;
     *      }
     *      else if (angle >= -135 && angle <= -45)
     *      {
     *          Debug.Log("west");
     *          defenseWest--;
     *      }
     *  }
     * }
     */

    /*
     * private void OnTriggerEnter(Collider other)
     * {
     *  //Calculate defense
     *  if (other.gameObject.tag == "Tile")
     *  {
     *      Tile currentTile = other.gameObject.GetComponent<Tile>();
     *
     *      Debug.Log(other.gameObject.name);
     *
     *      defenseNorth = currentTile.northCover;
     *      defenseSouth = currentTile.southCover;
     *      defenseEast = currentTile.eastCover;
     *      defenseWest = currentTile.westCover;
     *  }
     * }
     */

    public void move()
    {
        audioSource.PlayOneShot(footsteps, 0.7f);

        isMoving = true;

        anim.SetBool("isRunning", true);

        Vector3 targetTile;
        Vector3 randomDirection = Random.insideUnitSphere * movement1;

        //Debug.Log(randomDirection);
        randomDirection += transform.position;
        //Debug.Log(randomDirection);
        targetTile = gameManager.PickTile(randomDirection);
        NavMeshHit hit;

        NavMesh.SamplePosition(targetTile, out hit, movement1, 1);
        Vector3 finalPosition = hit.position;

        GetComponent <NavMeshAgent>().destination = finalPosition;

        //yield return new WaitForSeconds(5);
        //actionCount--;
    }