private bool ActivateTile(AdvancedTileBase tile) { // No tile, must be moving through walls if (tile == null) { return(true); } // Bush Flag if (tile.is_bush) { in_bush = true; StartCoroutine(map_manager.GrassRustle(pos)); } else { in_bush = false; } return(true); }
private void Update() { // Update Animator animator.SetInteger(Constants.DIRECTION_ANIMATION, (int)direction); if (walking_animation && !stepping_animation) { animator.SetBool(Constants.WALK_ANIMATION, moved); } else if (stepping_animation) { animator.SetBool(Constants.WALK_ANIMATION, true); } if (invisible) { foreach (SpriteRenderer sprite in sprites) { sprite.enabled = false; } } else { foreach (SpriteRenderer sprite in sprites) { sprite.enabled = true; } } if (in_bush) { bush_mask.enabled = true; } else { bush_mask.enabled = false; } // Apply Movement if (moved) { // Activate the tile being moved onto if (!tile_activated) { Vector3 move_dir = pos - transform.position; tile_activated = ActivateTile(move_dir); } // Move in that direction transform.position = Vector3.MoveTowards(transform.position, pos, Time.deltaTime * speed); } // Tilemap and Event awareness check if ((other_moved || moved) && transform.position == pos) { // Get neighboring tiles AdvancedTileBase[] neighbor_tiles = map_manager.GetNeighborTiles(this); on_tile = neighbor_tiles[0]; up_tile = neighbor_tiles[1]; left_tile = neighbor_tiles[2]; right_tile = neighbor_tiles[3]; down_tile = neighbor_tiles[4]; // Notify old neighbor events foreach (Event e in neighbor_events) { if (e != null) { MoveableCharacter character = e.GetComponent <MoveableCharacter>(); if (character != null) { character.other_moved = true; } } } // Get neighboring events neighbor_events = event_manager.GetNeighborEvents(this); on_event = neighbor_events[0]; up_event = neighbor_events[1]; left_event = neighbor_events[2]; right_event = neighbor_events[3]; down_event = neighbor_events[4]; // Notify new neighbor events foreach (Event e in neighbor_events) { if (e != null) { MoveableCharacter character = e.GetComponent <MoveableCharacter>(); if (character != null) { character.other_moved = true; } } } moved = false; other_moved = false; if (!tile_activated) { tile_activated = ActivateTile(on_tile); } } }