• Do not use Discord to host any images you post, these links expire quickly! You can learn how to add images to your posts here.
  • Eevee Expo's webhost has been having technical issues since Nov. 20th and you might be unable to connect to our site. Staff are also facing issues connecting, so please send a DM to Cat on-site or through Discord directly for faster service!
ENLS's Fancy Camera

Resource ENLS's Fancy Camera 1.0

ENLS submitted a new resource:

ENLS's Fancy Camera - More control of how the camera moves in-game

ENLS's Fancy Camera​

Makes the default camera more smooth and gives you more control over how it moves.

View attachment 23963

Overview:​

This plugin changes how the in-game camera works and allows you to do more with it. Normally the camera is completely stuck to the player at all times (except for when Scroll Map is used), and there's no real way to get...

Read more about this resource...
 

Mashirosakura

With my wishes frozen in time and long forgotten
Discord Mod
After seeing this used in Space Trainers, I asked if I could also use it, and it's currently in Pokemon Tengai! So I can say that this camera is amazing!
 

Drqiu

Novice
Member
Joined
Jun 6, 2023
Posts
25
I tried this plugin in v20.1 and it works great. Thanks a lot!
 

Victorcarvalhosp

Novice
Member
Joined
Jan 19, 2021
Posts
32
This is very cool! As you're doing some work with the camera I have a question: Do you think it's possible to zoom out the camera? I saw a plugin where it's possible to zoom-in - but not zoom-out.

Would be nice to have a zoom-out to show more of the map in certain scenes.
 

ardicoozer

Cooltrainer
Member
Joined
Sep 29, 2020
Posts
184
I getting weird with following pokemon plugin after using a fancy camera plugin.
If player use a running, overworld from pokemon following getting lagging..
 

RTCanwind

Tower Tycoon
Member
Joined
Jan 15, 2021
Posts
38
I absolutely love the way Camera runs in Space Trainers!
A small suggestion is to add a switch for players to switch between Fancy Camera/Traditional Camera, as this may cause a small number of players to feel dizzy.
 

Smudget

Rookie
Member
Joined
Dec 27, 2023
Posts
4
I absolutely love the way Camera runs in Space Trainers!
A small suggestion is to add a switch for players to switch between Fancy Camera/Traditional Camera, as this may cause a small number of players to feel dizzy.
I very much agree. The smooth camera easing works great when an event calls it, but it feels disorientated when you move freely. Plus it has an added side effect of followers from Following Pokemon EX to lag a bit when walking behind the player.

Otherwise, this is a phenomenal plugin that will be a huge game-changer for cutscenes.
 

wrigty12

Tester-Coder Hybrid
Member
Joined
Jul 24, 2022
Posts
561
Going to tag along with the opinions above. In a cutscene, the smooth camera is great. Running around freely, it's definitely disorienting.
 

RTCanwind

Tower Tycoon
Member
Joined
Jan 15, 2021
Posts
38
I very much agree. The smooth camera easing works great when an event calls it, but it feels disorientated when you move freely. Plus it has an added side effect of followers from Following Pokemon EX to lag a bit when walking behind the player.

Otherwise, this is a phenomenal plugin that will be a huge game-changer for cutscenes.
The lag of following pokemon may be caused by the Override of "def transfer_player", you can just combine them.
And I found it is not difficult to switch between Fancy Camera/Traditional Camera, just set camera_speed to 0.8 when you want to switch off it.
 

Smudget

Rookie
Member
Joined
Dec 27, 2023
Posts
4
The lag of following pokemon may be caused by the Override of "def transfer_player", you can just combine them.
And I found it is not difficult to switch between Fancy Camera/Traditional Camera, just set camera_speed to 0.8 when you want to switch off it.
Well I'll be damned. Thanks!

Though I will say, I don't know what you mean by combining the override. Also, I must be doing it wrong, because I've set it to 0.8 and it isn't working, though I'm likely in the wrong spot.
 
Last edited:

RTCanwind

Tower Tycoon
Member
Joined
Jan 15, 2021
Posts
38
Well I'll be damned. Thanks!

Though I will say, I don't know what you mean by combining the override. Also, I must be doing it wrong, because I've set it to 0.8 and it isn't working, though I'm likely in the wrong spot.

Ruby:
Expand Collapse Copy
  def camera_speed
    return 0.8 if $PokemonSystem.cameramode == 1 #or other switch you defined ,0.8 could be any number bigger
    return (@camera_speed || FancyCamera::DEFAULT_SPEED || 1) * 0.16
  end
This is what I do.
As for Following Pokemon EX, since I haven't tried out that, I cannot guarantee that it‘s the reason for lagging. But both of them have modified the "def transfer_player", which will inevitably cause some problems and require adjusting the plugin order or rearranging the scripts.
 
Last edited:

Smudget

Rookie
Member
Joined
Dec 27, 2023
Posts
4
return 0.8 if $PokemonSystem.cameramode == 1 #or other switch you defined ,0.8 could be any number bigger
return (@camera_speed || FancyCamera::DEFAULT_SPEED || 1) * 0.16
end[/CODE]
This is what I do.
As for Following Pokemon EX, since I haven't tried out that, I cannot guarantee that it‘s the reason for lagging. But both of them have modified the "def transfer_player", which will inevitably cause some problems and require adjusting the plugin order or rearranging the scripts.
I'm really sorry about this but I've never defined a switch before. Where would I define cameramode?
 

PFG (Frankly)

Moderated dev Essentials tinker
Member
Joined
Aug 11, 2017
Posts
29
This is very cool! As you're doing some work with the camera I have a question: Do you think it's possible to zoom out the camera? I saw a plugin where it's possible to zoom-in - but not zoom-out.

Would be nice to have a zoom-out to show more of the map in certain scenes.
yah i was thinking on that, that be a great addition
 

MakerBlack

Trainer
Member
Joined
Nov 23, 2020
Posts
97
Hello everyone, I recently started using the script and I found that this script has a problem with Joiplay. For players who want to use it on Joiplay without many problems, there is a solution here:
Ruby:
Expand Collapse Copy
def update_screen_position(_last_real_x, _last_real_y)
   # If you want to use all the features of Fancy Camera but use the default Essentials in the open world.
    if $PokemonSystem.fancy_camera == 0
      return if self.map.scrolling? || !(@moved_last_frame || @moved_this_frame)
      if (@real_x < _last_real_x && @real_x < $game_map.display_x + SCREEN_CENTER_X) ||
          (@real_x > _last_real_x && @real_x > $game_map.display_x + SCREEN_CENTER_X)
        self.map.display_x += @real_x - _last_real_x
      end
      if (@real_y < _last_real_y && @real_y < $game_map.display_y + SCREEN_CENTER_Y) ||
          (@real_y > _last_real_y && @real_y > $game_map.display_y + SCREEN_CENTER_Y)
        self.map.display_y += @real_y - _last_real_y
      end
      return
    end
    # Original code
    return if self.map.scrolling?
    target = [@real_x - SCREEN_CENTER_X,@real_y - SCREEN_CENTER_Y]
    if $game_temp.camera_pos && $game_temp.camera_pos[0] != 0 && $game_temp.camera_pos[1] != 0
      target = $game_temp.camera_pos
    end
    if $game_temp.camera_target_event && $game_temp.camera_target_event != 0
      event = $game_map.events[$game_temp.camera_target_event]
      if event
        target = [event.real_x - SCREEN_CENTER_X, event.real_y - SCREEN_CENTER_Y]
      end
    end
    if $game_temp.camera_shake > 0
      power = $game_temp.camera_shake * 25
      target = [target[0] + rand(-power..power), target[1] + rand(-power..power)]
    end
    if $game_temp.camera_offset && $game_temp.camera_offset != [0, 0]
      target = [target[0] + ($game_temp.camera_offset[0] * Game_Map::REAL_RES_X), target[1] + ($game_temp.camera_offset[1] * Game_Map::REAL_RES_Y)]
    end
    distance = Math.sqrt((target[0] - self.map.display_x)**2 + (target[1] - self.map.display_y)**2)
    speed = $game_temp.camera_speed * 0.2
    if distance < 0.75
      self.map.display_x = target[0]
      self.map.display_y = target[1]
    else
      self.map.display_x = target[0]
      self.map.display_y = target[1]
      #self.map.display_x = ease_in_out(self.map.display_x, target[0], speed)
      #self.map.display_y = ease_in_out(self.map.display_y, target[1], speed)
    end
  end

This fix is not ideal for the purpose of the script but it is something that at least temporarily suspends the lines
#self.map.display_x = ease_in_out(self.map.display_x, target[0], speed)
#self.map.display_y = ease_in_out(self.map.display_y, target[1], speed)

This is because ease_in_out uses a setting called Graphics.average_frame_rate and it works differently for the emulator and throws the screen to an unwanted position.

In the code there is an option if you want to use this Camera Script for cutscenes but would like to use the original in the open world. It just writes the default Essentials code, through a variable defined in PokemonSystem (you need to define your own).
But if you want to use this, modify the following codes:

Ruby:
Expand Collapse Copy
  def camera_x=(value)
    @camera_x = value
    @camera_pos = [0, 0] if !@camera_pos
    @camera_pos[0] = ((value == 0) ? 0 : (@camera_x * Game_Map::REAL_RES_X) - Game_Player::SCREEN_CENTER_X)
  end

  def camera_y=(value)
    @camera_y = value
    @camera_pos = [0, 0] if !@camera_pos
    @camera_pos[1] = ((value == 0) ? 0 : (@camera_y * Game_Map::REAL_RES_Y) - Game_Player::SCREEN_CENTER_Y)
  end
Here we only define @camera_pos because with the change it may not be well defined later.

Thanks ENLS for the awesome code!
 
Last edited:
Back
Top