first commit
This commit is contained in:
49
characters/samus/samus.gd
Normal file
49
characters/samus/samus.gd
Normal file
@@ -0,0 +1,49 @@
|
||||
extends CharacterBody3D
|
||||
|
||||
@export var state_machine: LimboHSM
|
||||
@onready var idle_state: LimboState = $LimboHSM/Idle
|
||||
|
||||
@export var move_pcam : PhantomCamera3D
|
||||
|
||||
@export var mouse_sensitivity: float = 0.05
|
||||
|
||||
@export var min_pitch: float = -89.9
|
||||
@export var max_pitch: float = 50
|
||||
|
||||
@export var min_yaw: float = 0
|
||||
@export var max_yaw: float = 360
|
||||
|
||||
func _ready() -> void:
|
||||
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
|
||||
|
||||
_initialize_state_machine()
|
||||
|
||||
|
||||
func _initialize_state_machine() -> void:
|
||||
state_machine.initial_state = idle_state
|
||||
state_machine.initialize(self)
|
||||
state_machine.set_active(true)
|
||||
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
|
||||
if event is InputEventMouseMotion:
|
||||
|
||||
var pcam_rotation_degrees: Vector3
|
||||
|
||||
# Assigns the current 3D rotation of the SpringArm3D node - so it starts off where it is in the editor
|
||||
pcam_rotation_degrees = move_pcam.get_third_person_rotation_degrees()
|
||||
|
||||
# Change the X rotation
|
||||
pcam_rotation_degrees.x -= event.relative.y * mouse_sensitivity
|
||||
|
||||
# Clamp the rotation in the X axis so it go over or under the target
|
||||
pcam_rotation_degrees.x = clampf(pcam_rotation_degrees.x, min_pitch, max_pitch)
|
||||
|
||||
# Change the Y rotation value
|
||||
pcam_rotation_degrees.y -= event.relative.x * mouse_sensitivity
|
||||
|
||||
# Sets the rotation to fully loop around its target, but witout going below or exceeding 0 and 360 degrees respectively
|
||||
pcam_rotation_degrees.y = wrapf(pcam_rotation_degrees.y, min_yaw, max_yaw)
|
||||
|
||||
# Change the SpringArm3D node's rotation and rotate around its target
|
||||
move_pcam.set_third_person_rotation_degrees(pcam_rotation_degrees)
|
||||
Reference in New Issue
Block a user