13 Commits
2.5 ... 2.5.2

Author SHA1 Message Date
a8d151d568 Add controller support to PR #22 2024-07-15 15:10:44 -07:00
b458cba1a1 Rename handle_rotation to handle_head_rotation 2024-07-15 15:10:20 -07:00
Zakarya
4782f80ec2 Merge pull request #22 from Knockturnal/main
Fixed camera jitter
2024-07-15 14:52:49 -07:00
Knockturnal
8a398bade0 Fixed camera jitter 2024-07-15 17:24:58 +02:00
28becd88c2 Set default values for crouch and sprint in the script 2024-07-02 08:56:27 -07:00
Zakarya
1f9bbd73b3 Merge pull request #20 from Phlegmlee/main
Removed hardcoded lines (causing the sprint and crouch bug) from Character.tscn
2024-07-02 08:55:18 -07:00
Tanner
4c0152e688 Merge branch 'ColormaticStudios:main' into main 2024-07-01 22:04:16 -06:00
Tanner
2d654f7600 Remove hard coded lines
Removed the hard coded lines that were causing the sprint and crouch variables to initialize to lowercase "crouch" and "sprint" instead of user specified values in the script.
2024-07-01 22:03:30 -06:00
6257f07766 Add a comment for check_controls 2024-07-01 19:52:49 -07:00
Zakarya
6a6de243dd Merge pull request #19 from Phlegmlee/main
Removed a stray word in the pause error message.
2024-07-01 19:47:09 -07:00
Tanner
669c951a81 Remove stray word in error message
Removed the word "move" from the error statement referring to the action PAUSE.
2024-07-01 19:55:15 -06:00
c64deaa27a Remove an accidental printf debug
I had added this here to find out why the  headbob animation reset
without any smoothing, but didn't realize it was there in the latest
commit.
2024-07-01 17:15:56 -07:00
be0001e554 Reset a RESET value, attempt to fix a camera bug 2024-06-21 00:11:36 -07:00
4 changed files with 30 additions and 62 deletions

View File

@ -33,7 +33,7 @@ You can make this a super basic controller by just disabling everything.
- In the controls export group, there is a commented section at the end that says "Uncomment this if you want full controller support". Uncomment that block.
- Make a key map for each direction (left, right, up, down) and map them to your joystick.
- Write in these keymaps in the controls section of the player settings.
- In the `_process` function, there is another block of commented code at the end that says the same thing. Uncomment that too.
- In the `handle_head_rotation` function, there is another block of commented code that says the same thing. Uncomment that too.
- You should now be able to look around with the joystick. Make sure you add the other controls to the input map. (movement, jumping, crouching, sprinting, etc.)
**How to change settings:**

View File

@ -36,14 +36,14 @@ extends CharacterBody3D
@export var FORWARD : String = "ui_up"
@export var BACKWARD : String = "ui_down"
@export var PAUSE : String = "ui_cancel"
@export var CROUCH : String
@export var SPRINT : String
@export var CROUCH : String = "crouch"
@export var SPRINT : String = "sprint"
# Uncomment if you want full controller support
#@export var LOOK_LEFT : String
#@export var LOOK_RIGHT : String
#@export var LOOK_UP : String
#@export var LOOK_DOWN : String
#@export var LOOK_LEFT : String = "look_left"
#@export var LOOK_RIGHT : String = "look_right"
#@export var LOOK_UP : String = "look_up"
#@export var LOOK_DOWN : String = "look_down"
@export_group("Feature Settings")
@export var jumping_enabled : bool = true
@ -75,6 +75,8 @@ var RETICLE : Control
# Get the gravity from the project settings to be synced with RigidBody nodes
var gravity : float = ProjectSettings.get_setting("physics/3d/default_gravity") # Don't set this as a const, see the gravity section in _physics_process
# Stores mouse input for rotating the camera in the phyhsics process
var mouseInput : Vector2 = Vector2(0,0)
func _ready():
#It is safe to comment this line if your game doesn't start with the mouse captured
@ -96,6 +98,7 @@ func _ready():
check_controls()
func check_controls(): # If you add a control, you might want to add a check for it here.
# The actions are being disabled so the engine doesn't halt the entire project in debug mode
if !InputMap.has_action(JUMP):
push_error("No control mapped for jumping. Please add an input map control. Disabling jump.")
jumping_enabled = false
@ -112,7 +115,7 @@ func check_controls(): # If you add a control, you might want to add a check for
push_error("No control mapped for move backward. Please add an input map control. Disabling movement.")
immobile = true
if !InputMap.has_action(PAUSE):
push_error("No control mapped for move pause. Please add an input map control. Disabling pausing.")
push_error("No control mapped for pause. Please add an input map control. Disabling pausing.")
pausing_enabled = false
if !InputMap.has_action(CROUCH):
push_error("No control mapped for crouch. Please add an input map control. Disabling crouching.")
@ -156,6 +159,8 @@ func _physics_process(delta):
if !immobile: # Immobility works by interrupting user input, so other forces can still be applied to the player
input_dir = Input.get_vector(LEFT, RIGHT, FORWARD, BACKWARD)
handle_movement(delta, input_dir)
handle_head_rotation()
# The player is not able to stand up if the ceiling is too low
low_ceiling = $CrouchCeilingDetection.is_colliding()
@ -213,6 +218,18 @@ func handle_movement(delta, input_dir):
velocity.x = direction.x * speed
velocity.z = direction.z * speed
func handle_head_rotation():
HEAD.rotation_degrees.y -= mouseInput.x * mouse_sensitivity
HEAD.rotation_degrees.x -= mouseInput.y * mouse_sensitivity
# Uncomment for controller support
#var controller_view_rotation = Input.get_vector(LOOK_DOWN, LOOK_UP, LOOK_RIGHT, LOOK_LEFT) * 0.035 # These are inverted because of the nature of 3D rotation.
#HEAD.rotation.x += controller_view_rotation.x
#HEAD.rotation.y += controller_view_rotation.y
mouseInput = Vector2(0,0)
HEAD.rotation.x = clamp(HEAD.rotation.x, deg_to_rad(-90), deg_to_rad(90))
func handle_state(moving):
if sprint_enabled:
@ -313,9 +330,9 @@ func headbob_animation(moving):
# This code is extremely performant but it makes no sense.
else:
if HEADBOB_ANIMATION.is_playing():
HEADBOB_ANIMATION.play("RESET", 0.25)
if HEADBOB_ANIMATION.current_animation == "sprint" or HEADBOB_ANIMATION.current_animation == "walk":
HEADBOB_ANIMATION.speed_scale = 1
HEADBOB_ANIMATION.play("RESET", 1)
func _process(delta):
@ -332,17 +349,9 @@ func _process(delta):
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
Input.MOUSE_MODE_VISIBLE:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
HEAD.rotation.x = clamp(HEAD.rotation.x, deg_to_rad(-90), deg_to_rad(90))
# Uncomment if you want full controller support
#var controller_view_rotation = Input.get_vector(LOOK_LEFT, LOOK_RIGHT, LOOK_UP, LOOK_DOWN)
#HEAD.rotation_degrees.y -= controller_view_rotation.x * 1.5
#HEAD.rotation_degrees.x -= controller_view_rotation.y * 1.5
func _unhandled_input(event):
if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
HEAD.rotation_degrees.y -= event.relative.x * mouse_sensitivity
HEAD.rotation_degrees.x -= event.relative.y * mouse_sensitivity
mouseInput.x += event.relative.x
mouseInput.y += event.relative.y

View File

@ -174,17 +174,6 @@ tracks/1/keys = {
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
tracks/2/type = "bezier"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Camera:position:z")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
[sub_resource type="Animation" id="Animation_8ku67"]
resource_name = "sprint"
@ -212,17 +201,6 @@ tracks/1/keys = {
"points": PackedFloat32Array(0.05, -0.25, 0, 0.2, -0.01, 0, -0.2, 0.000186046, 0.2, 0.000186046, 0.05, -0.2, -0.01, 0.2, -0.01, 0, -0.2, 0, 0.2, 0, 0.05, -0.2, -0.01, 0.25, 0),
"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
}
tracks/2/type = "bezier"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Camera:position:z")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"handle_modes": PackedInt32Array(0, 0, 0, 0, 0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
}
[sub_resource type="Animation" id="Animation_lrqmv"]
resource_name = "walk"
@ -250,17 +228,6 @@ tracks/1/keys = {
"points": PackedFloat32Array(-0.05, -0.25, 0, 0.2, 0.005, 0, -0.2, 0.000186046, 0.2, 0.000186046, -0.05, -0.2, 0.005, 0.2, 0.005, 0, -0.2, 0, 0.2, 0, -0.05, -0.2, 0.005, 0.25, 0),
"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
}
tracks/2/type = "bezier"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Camera:position:z")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"handle_modes": PackedInt32Array(0, 0, 0, 0, 0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0, 0, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2)
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_o0unb"]
_data = {
@ -281,7 +248,7 @@ tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0.0349066, 0, 0)]
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
@ -393,8 +360,6 @@ HEADBOB_ANIMATION = NodePath("Head/HeadbobAnimation")
JUMP_ANIMATION = NodePath("Head/JumpAnimation")
CROUCH_ANIMATION = NodePath("CrouchAnimation")
COLLISION_MESH = NodePath("Collision")
CROUCH = "crouch"
SPRINT = "sprint"
[node name="Mesh" type="MeshInstance3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
@ -413,7 +378,6 @@ libraries = {
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
[node name="Camera" type="Camera3D" parent="Head"]
transform = Transform3D(1, 0, 0, 0, 0.999391, -0.0348995, 0, 0.0348995, 0.999391, 0, 0, 0)
[node name="HeadbobAnimation" type="AnimationPlayer" parent="Head"]
libraries = {

View File

@ -65,9 +65,6 @@ uv1_triplanar_sharpness = 0.000850145
[node name="Character" parent="." instance=ExtResource("1_e18vq")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
[node name="Camera" parent="Character/Head" index="0"]
transform = Transform3D(1, 0, 0, 0, 0.999391, -0.0348995, 0, 0.0348995, 0.999391, 0, 0, 0)
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_20rw3")
@ -107,5 +104,3 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 3, -15.5)
use_collision = true
size = Vector3(19, 8, 1)
material = SubResource("StandardMaterial3D_7j4uu")
[editable path="Character"]