Sure! But maybe I’d think it’s better restart from zero.
ᅠ
The previous camera script:
extends Camera2D
class_name RoomTransiCamera
const HORIZONTAL_OFFSET : int = 56
const VERTICAL_OFFSET : int = 64
@onready var m_CameraHorizontalMovement : int = get_viewport_rect().size.x - HORIZONTAL_OFFSET
@onready var m_CameraVerticalMovement : int = get_viewport_rect().size.y - VERTICAL_OFFSET
@export var TargetNode : Node2D = null
var m_CurrentRoom : Vector2 = Vector2.ZERO
var m_OriginOffset : Vector2 = Vector2.ZERO
func _ready():
m_OriginOffset = TargetNode.get_position()
set_position(m_OriginOffset)
func _UpdateCameraPosition(direction : Vector2) -> void:
m_CurrentRoom += direction
set_position(m_OriginOffset + m_CurrentRoom * Vector2(m_CameraHorizontalMovement, m_CameraVerticalMovement))
func _OnBodyEnteredCima(body):
_UpdateCameraPosition(Vector2.UP)
func _OnBodyEnteredBaixo(body):
_UpdateCameraPosition(Vector2.DOWN)
func _OnBodyEnteredEsqu(body):
_UpdateCameraPosition(Vector2.LEFT)
func _OnBodyEnteredDire(body):
_UpdateCameraPosition(Vector2.RIGHT)
ᅠ
The scene so far (“sala” is “room” in portuguese):
ᅠ
This is the best I could do, following this tutorial. Apparently, using collisions in this way is more complicated than “camera bounds.” Some research leads me to believe that there may be a more effective method, but I’m not sure about that.