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(); } }
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)); }