Beispiel #1
0
    private void Update()
    {
        PlayerContoller.Movement movement = new PlayerContoller.Movement();
        if (Input.GetKey(KeyCode.RightArrow))
        {
            movement.Horizontal = 1;
        }
        else if (Input.GetKey(KeyCode.LeftArrow))
        {
            movement.Horizontal = -1;
        }
        if (Input.GetKey(KeyCode.UpArrow))
        {
            movement.Vertical = 1;
        }
        else if (Input.GetKey(KeyCode.DownArrow))
        {
            movement.Vertical = -1;
        }

        contoller.SetNextMovement(movement);

        if (Input.GetKeyDown(KeyCode.Space))
        {
            contoller.ShootMissle();
        }
    }
Beispiel #2
0
    private void DecideMovement()
    {
        runAwayFrom.Clear();
        getCloseTo.Clear();
        float x = transform.position.x, y = transform.position.y;

        if (Boss.ins.UsingLaser)
        {
            runAwayFrom.Add(new Vector3(Boss.ins.transform.position.x, y));
        }

        List <Weapon> bombs = WeaponPrefabPool.GetPool(WeaponType.BossBomb).AliveObjects;

        for (int _i = 0; _i < bombs.Count; _i++)
        {
            Vector3 bombPos = bombs[_i].transform.position;

            float distance = (bombPos - transform.position).sqrMagnitude;
            if (distance < 16)
            {
                runAwayFrom.Add(bombPos);
            }
            else if (bombPos.y > y && Mathf.Abs(bombPos.x - x) < 3)
            {
                getCloseTo.Add(new Vector3(bombPos.x, y));
            }
        }

        List <Weapon> bullets = WeaponPrefabPool.GetPool(WeaponType.BossBullet).AliveObjects;

        for (int _i = 0; _i < bullets.Count; _i++)
        {
            Vector3 bulletPos = bullets[_i].transform.position;

            float distance = (bulletPos - transform.position).sqrMagnitude;
            if (distance < 4)
            {
                runAwayFrom.Add(bulletPos);
            }
            else if (bulletPos.y > y && Mathf.Abs(bulletPos.x - x) < 3)
            {
                getCloseTo.Add(new Vector3(bulletPos.x, y));
            }
        }

        List <Weapon> minions = WeaponPrefabPool.GetPool(WeaponType.Minion).AliveObjects;

        for (int _i = 0; _i < minions.Count; _i++)
        {
            Vector3 minionPos = minions[_i].transform.position;

            float distance = (minionPos - transform.position).sqrMagnitude;
            if (distance < 9)
            {
                runAwayFrom.Add(minionPos);
            }
            else if (minionPos.y > y && Mathf.Abs(minionPos.x - x) < 3)
            {
                getCloseTo.Add(new Vector3(minionPos.x, y));
            }
        }

        // for (int i = 0; i < MedPack.Pools.AliveObjects.Count; i++) {
        //     Vector3 medPackPos = MedPack.Pools.AliveObjects[i].transform.position;

        //     float distance = (medPackPos - transform.position).sqrMagnitude;
        //     if (distance < 11) {
        //         getCloseTo.Add(medPackPos);
        //     }
        // }

        result = Vector3.zero;

        if (runAwayFrom.Count > 0 || getCloseTo.Count > 0)
        {
            for (int i = 0; i < runAwayFrom.Count; i++)
            {
                float distance = (runAwayFrom[i] - transform.position).sqrMagnitude;
                if (distance == 0)
                {
                    result += RandomVectorDirection();
                }
                else
                {
                    result += (transform.position - runAwayFrom[i]) * Mathf.Min(0.9f / distance, 2);
                }
            }

            for (int i = 0; i < getCloseTo.Count; i++)
            {
                float distance = (getCloseTo[i] - transform.position).sqrMagnitude;
                if (distance != 0)
                {
                    result += (getCloseTo[i] - transform.position) * Mathf.Min(0.4f / distance, 2);
                }
            }
        }
        else
        {
            result.x = Boss.ins.transform.position.x - x;
        }

        controller.SetNextMovement(new PlayerContoller.Movement(result));
    }