//Update Event void Update() { bool[] controls = getControls(); if (doorTimer != -2f) { doorTimer -= Time.time; } //Movement velocity.x = 0f; if (can_move) { //Jump if (controls[4]) { if (doorTimer < 0 && doorTimer != -2f && !stop) { transform.position = door.findDoor(); doorTimer = -2f; door = null; stop = true; } else { if (canJump) { jump_force = jump; canJump = false; } } } //Move Left and Right if (controls[1]) { //Left velocity.x = -spd; } else if (controls[3]) { //Right velocity.x = spd; } } }
//Update protected override void step() { base.step(); //Movement Vector2 velocity = Vector2.zero; if (zombie == true) { //Check for Player or Humans GameObject player = GameObject.FindGameObjectWithTag("Player"); List <GameObject> humans = new List <GameObject>(GameObject.FindGameObjectsWithTag("Human")); humans.Add(player); bool near = false; Vector2 near_pos = Vector2.zero; Vector2 target_pos = Vector2.zero; for (int i = 0; i < humans.Count; i++) { if (Vector2.Distance(humans[i].transform.position, transform.position) <= aware_r) { near = true; near_pos = humans[i].transform.position; break; } } //Move towards Door or Humans if (near) { target_pos = near_pos; } else { if (!door_found) { GameObject[] doors = GameObject.FindGameObjectsWithTag("Door"); List <DoorBehavior> up_doors = new List <DoorBehavior>(); for (int i = 0; i < doors.Length; i++) { if (level == LevelManager.instance.getLevelNum(doors[i].transform.position.y)) { if (doors[i].GetComponent <DoorBehavior>().up) { up_doors.Add(doors[i].GetComponent <DoorBehavior>()); } } } if (up_doors.Count > 0) { door_found = true; door = up_doors[Random.Range(0, up_doors.Count)]; } else { target_pos = player.transform.position; } } else { target_pos = new Vector2(door.transform.position.x, door.transform.position.y); } } if (transform.position.x < target_pos.x) { velocity.x = spd; } else if (transform.position.x > target_pos.x) { velocity.x = -spd; } //Move Up Doors if (door_move) { transform.position = door.findDoor(); level = LevelManager.instance.getLevelNum(transform.position.y); door_move = false; door_found = false; door = null; } } else { } transform.position = new Vector2(transform.position.x + velocity.x, LevelManager.instance.getLevelY(level)); }