Exemplo n.º 1
0
    void Start()
    {
        InitializeEntity();
        AutoTarget = new AstralProjection(gameObject);

        canAttack = true;
        if (attackingg == null)
        {
            attackingg = GameObject.FindGameObjectWithTag("Player");
            attacking  = attackingg.GetComponent <Entities>();
        }

        mapgen           = GameObject.FindGameObjectWithTag("MapGen").GetComponent <MakeMap>();
        initFloor        = mapgen.DungeonFloor;
        ai               = new MovementAI(mapgen.currentFloor());
        isWandering      = true;
        isBlindlyChasing = false;

        /*
         * path = ai.getPath (gameObject.transform.position, attackingg.transform.position);
         * ai.currentNode = path.pop ();
         */
    }
Exemplo n.º 2
0
    void FixedUpdate()
    {
        ai.fpscounter++;
        aidirection = attackingg.transform.position - gameObject.transform.position;

        RaycastHit2D hit = Physics2D.Raycast(gameObject.transform.position, aidirection, 12.0f, Wall);

        if (hit.collider != null && hit.collider.tag == "Player")
        {
            visible = true;
        }
        else
        {
            visible = false;
        }

        if (visible)
        {
            if (getDistance(attackingg) < 10.0f)
            {
                this.setDirection(aidirection);
                Move();
                isBlindlyChasing = false; //name innacurate because of this, but #YOLO
            }
            else
            {
                isBlindlyChasing = true;
            }
            if (isWandering && getDistance(attackingg) >= 10.0f)
            {
                actuallyRePath(attackingg.transform.position);
            }

            isWandering  = false;
            lastTimeSeen = Time.time;
        }
        else if (!visible && (Time.time - lastTimeSeen < chaseTimeOut))
        {
            isBlindlyChasing = true;
            isWandering      = false;
        }
        else
        {
            if (isBlindlyChasing)
            {
                actuallyRePath(attackingg.transform.position);
            }
            isWandering      = true;
            isBlindlyChasing = false;
        }



        if (isWandering)
        {
            if (ai.currentNode == null)
            {
                eTile[,] map = mapgen.currentFloor();
                Location randomPlace;
                do
                {
                    randomPlace = new Location(Random.Range(0, map.GetLength(0)), Random.Range(0, map.GetLength(1)));
                }while (map[randomPlace.x, randomPlace.y] != eTile.Floor);

                randomTarget = new Vector3(randomPlace.x, randomPlace.y, 0);

                PathFindTowards(randomTarget);
            }
            else
            {
                PathFindTowards(randomTarget);
            }
        }

        if (isBlindlyChasing)
        {
            PathFindTowards(attackingg.transform.position);
        }



        if (name.Equals("Ghost") && getDistance(attackingg) < 60 && GetComponent <Status>().see)
        {
            //if (getDistance (attackingg) < 60 && GetComponent<Status>().see) {
            AutoTarget.cast(attackingg);
            //Debug.Log ("123");
            //Debug.Log(attackingg.tag);
        }
    }