Godot Version
4.4.1 Stable
Question
I’ve been trying to make a katamari fan game and I’m stuck because I can’t figure out how to make a relative camera. I don’t know what to do, here’s the code.
#####################################################################
extends RigidBody3D
#Variables
@export var rolling_force: float = 50.0
@export var Katamari_mass = 1.0
@export var Radius = 0.6
@export var camera_node: Camera3D
@onready var katamari_collision: CollisionShape3D = $CollisionShape3D
@onready var SpringArmPivot:Node3D = $SpringArmPivot
@onready var SpringArm:SpringArm3D = $SpringArmPivot/SpringArm3D
@onready var Camera:Camera3D = $SpringArmPivot/SpringArm3D/Camera3D
@onready var Katamari:RigidBody3D = $“.”
var current_rolling_force = rolling_force
var pickup_count: int = 0
#Functions
func _ready():
SpringArmPivot.top_level = true
katamari_collision.shape.radius = 0.5
func _physics_process(delta):
var old_camera_pos = SpringArmPivot.global_transform.origin
var ball_pos = global_transform.origin
var _new_camera_pos = lerp(old_camera_pos, ball_pos, 0.1)
if current_rolling_force > rolling_force:
current_rolling_force = rolling_force
SpringArmPivot.global_transform.origin = global_transform.origin
#With this code here, I was trying to make a relative camera but I couldn’t figure out how to get two inputs at the same time (if its even possible).
var input_dir := Input.get_vector(“Left Left” “Right Left”, “Left Right” “Right Right”, “Left Up” “Right Up”, “Left Down” “Right Down”)
var direction := (SpringArmPivot.transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
direction = direction.rotated(Vector3.UP, SpringArmPivot.rotation.y)
#Controls
#Katamari Controls
if Input.is_action_pressed("Left Up"):
if Input.is_action_pressed("Right Up"):
angular_velocity.x -= rolling_force * delta
elif Input.is_action_pressed("Left Down"):
if Input.is_action_pressed("Right Down"):
angular_velocity.x += rolling_force * delta
if Input.is_action_pressed("Left Left"):
if Input.is_action_pressed("Right Left"):
angular_velocity.z += rolling_force * delta
elif Input.is_action_pressed("Left Right"):
if Input.is_action_pressed("Right Right"):
angular_velocity.z -= rolling_force * delta
#Camera Controls
if Input.is_action_pressed("Left Up"):
if !Input.is_action_pressed("Right Up"):
SpringArmPivot.rotation.y += -0.04
if Input.is_action_pressed("Right Up"):
if !Input.is_action_pressed("Left Up"):
SpringArmPivot.rotation.y += 0.04
if Input.is_action_pressed("Left Down"):
if !Input.is_action_pressed("Right Down"):
SpringArmPivot.rotation.y += 0.04
if Input.is_action_pressed("Right Down"):
if !Input.is_action_pressed("Left Down"):
SpringArmPivot.rotation.y += -0.04
#####################################################################
If anyone has any idea of what I could do, I would appreciate it a lot!