extends CharacterBody3D
# How fast the player moves in meters per second.
-@export var speed = 5
+@export var speed := 5
# The downward acceleration when in the air, in meters per second squared.
-@export var fall_acceleration = 10
+@export var fall_acceleration := 10
@export var pivot: Node3D
-var target_velocity = Vector3.ZERO
+var target_velocity := Vector3.ZERO
+var noise: int = 0
+
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _physics_process(_delta):
- var direction = Vector3.ZERO
+ var direction := Vector3.ZERO
if Input.is_action_pressed("move_right"):
direction += transform.basis.x
direction = direction.normalized()
pivot.look_at(position + direction, Vector3.UP)
+ # if movement make some noise
+ if randf() > .95:
+ noise = clamp(noise + 1, 0, 9)
+ set_meta("noise", noise)
+
target_velocity.x = direction.x * speed
target_velocity.z = direction.z * speed
velocity = target_velocity
move_and_slide()
+
+
+# each second
+func _on_timer_timeout():
+ noise = clamp(noise - 1, 0, 9)
+ set_meta("noise", noise)
+ print(noise)
radius = 0.25
height = 1.8
-[node name="CharacterBody3D" type="CharacterBody3D" node_paths=PackedStringArray("pivot")]
+[node name="CharacterBody3D" type="CharacterBody3D" node_paths=PackedStringArray("pivot") groups=["player"]]
top_level = true
script = ExtResource("1_x0wva")
pivot = NodePath("Pivot")
+metadata/noise = 0.0
+
+[node name="Timer" type="Timer" parent="."]
+autostart = true
[node name="Pivot" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9, 0)
shape = SubResource("CapsuleShape3D_22gap")
+
+[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]