Releases: ramokz/phantom-camera
v0.5.0.5
v0.5.0.4
v0.5.0.3
🛠️ Fixes
- Fixed issue where assigning targets to
Follow Group
orLook at Group
entirely via code would never trigger their respective logic.- Thanks @mharitsnf for spotting this.
- Fixed issue where removing the last
Look At Group
node from the array would cause continuous error output. - Fixed issue when applying a Look At target while using Third Person Follow mode would cause a null exception and crash upon loading.
- Thanks @matt-seaton for spotting this.
⬆️ Improvements
- Added ability to erase
Follow
andPath
target nodes via setter method. - Updated
.gitattributes
so that anything but theaddons/
directory content won't get downloaded.
v0.5.0.2
🛠️ Fixes
- Fixed an issue where instantiating a
Camera
node and then aPhantomCameraHost
node will trigger a series of errors until aPhantomCamera
node was added as well. - Converted additional missing
get_position()
calls toget_global_position()
- Converted additional missing
get_rotation()
calls toget_global_rotation()
Thanks @m4rr5 for spotting these!
v0.5.0.1
v0.5
✨ New Features
Third Person Follow
3D-Follow-Third-Person.mp4
As the name implies, this mode is meant to be used for third person camera experiences.
It works by applying a SpringArm3D
, where the properties, such as Collison Mask
, Spring Length
and Margin
, can be controlled from the PhantomCamera3D
.
More documentation, with an example code setup for orbit controls, can be found on the Third Person wiki page.
A working scene example can be found in 3DFollowThirdPersonExampleScene.tscn
inside addon/examples
directory.
⬆️ Improvements
Priority Override (Editor only)
Enabling this temporarily changes the currently active PhantomCamera
without modifying the Priority
value.
The intent is to avoid having to manually adjust a PhantomCamera
's Priority
value to preview it by, e.g., by setting the value to 99, which can lead to unintended behaviour if not reverted back again.
The Viewfinder will display a UI prompt whenever a PhantomCamera
has this enabled. Pressing the UI prompt will select that PhantomCamera from the scene tree.
Note: The override is only functional when working in the editor and will be ignored when running the game.
Camera3D Resource
Camera3D
properties can now be adjusted per PhantomCamera3d
nodes using the new Camera3D
resource. With the exception of the Cull Mask, these properties will also be tweened upon changing the active PhantomCamera3D.
The adjustable properties are:
- Cull Mask
- H Offset
- V Offset
- FOV
⚠️ Note
As part of this addition, some of the scene's Camera3D
properties will be overridden by an active PhantomCamera3D
node IF it has a Camera3D
resource assigned to it – by default, they will not have that.
I.e. If there's existing code in the project that changes the Camera3D
's properties, or if there is a pre-defined property setup on a Camera3D
node, then be aware that this can either cause conflicting property changes or unintentionally override an existing setup.
🛠 Fixes
- Movement jitter on high refresh rate monitors should no longer be occurring.
- Fixed by updating the tween and follow logic only after the physics ticks.
- Look At mode property didn't update when changed from the inspector.
- Fixed by changing the variable name, which seems to conflict with the property's
StringName
.
- Fixed by changing the variable name, which seems to conflict with the property's
- Tweening the rotation between two
PhantomCamera3D
s now uses the shortest rotation distance. Fixes an issue where the tweening would do an unexpected 180-degree spin.- Fixed by tweening using Quaternion instead of Euler values.
v0.4
✨ New Features
Framed Follow
PhantomCamera2D |
PhantomCamera3D |
---|---|
2D-Follow-Framed.mp4 |
3D-Follow-Framed.mp4 |
Enables dynamic framing of a given target using dead zones. Dead zones enable the camera to remain still until the target moves far enough away from the camera's view. This is determined by the horizontal and vertical dead zone size in their respective properties within the inspector.
Viewfinder
Viewfinder.mp4
Preview what the Camera2D
/ Camera3D
sees when attached to a PhantomCamera. Accessible from the bottom panel labelled Phantom Camera
. The viewfinder rendering of the scene will only work when the combination of a Camera
, PhantomCameraHost
and PhantomCamera
are present in the scene.
Dead Zones
When Follow Mode is set to Framed, dead zones will also be visible in the viewfinder and, if enabled, when playing the game from the editor.
Note: Dead Zones will never be visible in build exports.
Empty States
When creating a new scene, the Viewfinder will not work by default due to the missing required nodes.
To improve the user experience, and to provide better guidance for why it isn't working, the Viewfinder provides a quick and simple button flow to adding any missing required nodes.
About 2D Support
Most of the setup is there, however, getting the 2D view to render in the viewfinder doesn't quite work yet.
Issue can be found here: #105
⬆️ Improvements
Setter & Getters Functions
Added a series of functions that allows for setting and getting properties, enabling easier code configuration of PhantomCamera nodes.
With this you can now assign, or remove, targets to a Follow Group, change the target offset, get its current priority and more.
See the PhantomCamera2D and PhantomCamera3D property pages for the full list of setter and getter functions.
v0.3.2
⬆️ Improvements
Tween on Load (Property)
When PhantomCameras are instantiated, there's now a property to prevent it from automatically triggering a transition.
This is to cover use cases such as avoid having the Camera drag behind a playable character, for however long the Duration
property is set to, whenever a scene is loaded. Instead, it can now (optionally) do its follow / look at logic from the moment it enters the scene and is set with the highest priority.
Before & After Example
TweenOnLoad.mp4
v0.3.1
⚠️ Breaking / Property Reset Changes
The property naming convention has been updated to match Godot's snake_case standard.
As a result, property values of (most) existing PhantomCamera
nodes' will be reset upon opening the scene they exist in.
🩹 To Keep Existing Properties
To avoid having to redo all the parameters in the editor:
- Close Godot's Editor – this is to prevent Godot from accidentally resetting existing properties prematurely
- Update the property names in the scenes (
.tscn
) that havePhantomCamera
nodes, like shown below
- Then update the plugin
⬆️ Improvements
Zoom
support in AnimationPlayer
Can now animate the zoom
property of a PhantomCamera2D
using AnimationPlayer
nodes.
Note: The output log will spam errors when doing this, but the effect should be working as intended regardless. Still under investigation!
v0.3
✨ New Features
Path Follow
Support for following a target while being positionally confined to the closest point on Path2D
/ Path3D
.
Tween Resource Support
Tween properties (Duration, Transition and Ease) are now resources. So their values can be saved as a file and be linked across multiple PhantomCamera
nodes and updated from a single place.
Inactive Update Mode
Individually set how frequently PhantomCamera
nodes should update when inactive.
⬆️ Improvements
Using AnimationPlayer (Documentation)
Short guide for how to tween between PhantomCameras
using an AnimationPlayer (timeline) node: https://github.com/ramokz/phantom-camera/wiki/Using-AnimationPlayer