Velocity & damping are reset between shots

This commit is contained in:
Rob Kelly 2025-01-10 14:55:26 -07:00
parent 445aa48bb0
commit 9adf009a21
10 changed files with 54 additions and 20 deletions

View File

@ -442,7 +442,6 @@ spawn_turns = 1
[node name="ExplosionEffect" parent="Course" instance=ExtResource("16_xufks")] [node name="ExplosionEffect" parent="Course" instance=ExtResource("16_xufks")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 274.103, 5.01502, 286.299) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 274.103, 5.01502, 286.299)
visible = false
[node name="CityBuildings" type="Node3D" parent="."] [node name="CityBuildings" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 129.404, -9.53674e-07, 309.4) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 129.404, -9.53674e-07, 309.4)

View File

@ -6,6 +6,7 @@ signal entered_water
## Types of game balls ## Types of game balls
enum Type { enum Type {
DEBUG = -1,
NONE, NONE,
BASIC, BASIC,
PLASMA, PLASMA,
@ -221,12 +222,14 @@ func _on_sleeping_state_changed() -> void:
if sleeping: if sleeping:
# Trigger to reassign on wake # Trigger to reassign on wake
_awake = false _awake = false
linear_velocity = Vector3.ZERO
angular_velocity = Vector3.ZERO
linear_damp = 0.0
angular_damp = 0.0
func _manual_sleep() -> void: func _manual_sleep() -> void:
freeze = true freeze = true
linear_velocity = Vector3.ZERO
angular_velocity = Vector3.ZERO
manual_sleep_timer.start() manual_sleep_timer.start()

View File

@ -35,10 +35,13 @@ script/source = "extends Control
const COLOR_X := Color(1, 0, 0) const COLOR_X := Color(1, 0, 0)
const COLOR_Y := Color(0, 1, 0) const COLOR_Y := Color(0, 1, 0)
const COLOR_Z := Color(0, 0, 1) const COLOR_Z := Color(0, 0, 1)
const COLOR_VELOCITY := Color.ORANGE
const COLOR_MAGNUS := Color.CYAN const COLOR_MAGNUS := Color.CYAN
const VELOCITY_SCALE := 0.5
const MAGNUS_SCALE := 3 const MAGNUS_SCALE := 3
const WIDTH := 4 const WIDTH := 4
@export var draw_velocity := true
@export var draw_reoriented_basis := true @export var draw_reoriented_basis := true
@export var draw_magnus_effect := true @export var draw_magnus_effect := true
@export var draw_gravity_basis := true @export var draw_gravity_basis := true
@ -54,6 +57,11 @@ func _process(_delta: float) -> void:
func _draw() -> void: func _draw() -> void:
var camera := get_viewport().get_camera_3d() var camera := get_viewport().get_camera_3d()
var start := camera.unproject_position(physics_ball.global_position) var start := camera.unproject_position(physics_ball.global_position)
if draw_velocity:
var end := camera.unproject_position(physics_ball.global_position + physics_ball.linear_velocity * VELOCITY_SCALE)
draw_line(start, end, COLOR_VELOCITY, WIDTH)
if draw_reoriented_basis and physics_ball._last_contact_normal != null: if draw_reoriented_basis and physics_ball._last_contact_normal != null:
var basis := physics_ball.get_reoriented_basis() var basis := physics_ball.get_reoriented_basis()
var end_x := camera.unproject_position(physics_ball.global_position + basis.x) var end_x := camera.unproject_position(physics_ball.global_position + basis.x)
@ -190,8 +198,8 @@ anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = SubResource("GDScript_p4v7o") script = SubResource("GDScript_p4v7o")
draw_reoriented_basis = false
draw_magnus_effect = false draw_magnus_effect = false
draw_gravity_basis = false
[node name="SFX" type="Node3D" parent="."] [node name="SFX" type="Node3D" parent="."]
unique_name_in_owner = true unique_name_in_owner = true

View File

@ -89,6 +89,12 @@ func _finish_scene_load(instance: Node) -> void:
func _process(_delta: float) -> void: func _process(_delta: float) -> void:
# REMOVEME
if Input.is_action_just_pressed("ui_page_up"):
Engine.time_scale *= 2.0
if Input.is_action_just_pressed("ui_page_down"):
Engine.time_scale *= 0.5
if _loading_resources and not loading_screen.visible: if _loading_resources and not loading_screen.visible:
loader_transition.play("fade_in") loader_transition.play("fade_in")

View File

@ -16,6 +16,7 @@ iron = ExtResource("2_piku2")
wedge = ExtResource("5_wm4ae") wedge = ExtResource("5_wm4ae")
putter = ExtResource("3_tytwr") putter = ExtResource("3_tytwr")
_balls = { _balls = {
-1: -1,
1: -1, 1: -1,
2: 5, 2: 5,
3: -1, 3: -1,

View File

@ -6,6 +6,7 @@ signal ball_changed(ball: GameBall)
## Scenes for each type of ball. ## Scenes for each type of ball.
const SCENE_MAP: Dictionary = { const SCENE_MAP: Dictionary = {
GameBall.Type.DEBUG: preload("res://src/equipment/balls/debug_ball/debug_ball.tscn"),
GameBall.Type.BASIC: preload("res://src/equipment/balls/physics_ball/physics_ball.tscn"), GameBall.Type.BASIC: preload("res://src/equipment/balls/physics_ball/physics_ball.tscn"),
GameBall.Type.PLASMA: preload("res://src/equipment/balls/plasma_ball/plasma_ball.tscn"), GameBall.Type.PLASMA: preload("res://src/equipment/balls/plasma_ball/plasma_ball.tscn"),
GameBall.Type.BRICK: preload("res://src/equipment/balls/brick/brick.tscn"), GameBall.Type.BRICK: preload("res://src/equipment/balls/brick/brick.tscn"),

View File

@ -4,6 +4,7 @@ class_name BallSelector extends Control
const TWEEN_TIME := 0.2 const TWEEN_TIME := 0.2
const Y_OFFSET := { const Y_OFFSET := {
GameBall.Type.DEBUG: 0,
GameBall.Type.NONE: 50, GameBall.Type.NONE: 50,
GameBall.Type.BASIC: 18, GameBall.Type.BASIC: 18,
GameBall.Type.PLASMA: -14, GameBall.Type.PLASMA: -14,

View File

@ -1,38 +1,46 @@
[gd_scene load_steps=8 format=3 uid="uid://c6k44l0mnq3o1"] [gd_scene load_steps=10 format=3 uid="uid://c6k44l0mnq3o1"]
[ext_resource type="Curve" uid="uid://b5vptoxuq3dwb" path="res://src/world/effects/explosion/intensity_curve.tres" id="1_rxjwh"]
[sub_resource type="Gradient" id="Gradient_tuj3x"] [sub_resource type="Gradient" id="Gradient_tuj3x"]
offsets = PackedFloat32Array(0, 0.0850112, 0.693512, 0.760626) offsets = PackedFloat32Array(0, 0.148459, 0.29972, 0.840336)
colors = PackedColorArray(3, 3, 3, 1, 2, 2, 0.6, 1, 1, 0.0623333, 0.03, 1, 0, 0, 0, 1) colors = PackedColorArray(1, 0.0623333, 0.03, 1, 1, 1, 1, 1, 1, 1, 0.3, 1, 0.08736, 0.09, 0.0702, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_d6li3"] [sub_resource type="GradientTexture1D" id="GradientTexture1D_d6li3"]
gradient = SubResource("Gradient_tuj3x") gradient = SubResource("Gradient_tuj3x")
[sub_resource type="Curve" id="Curve_oo5uu"] [sub_resource type="Curve" id="Curve_kl03u"]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.0842105, 1), 0.0, 0.0, 0, 0, Vector2(0.246316, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] max_value = 3.0
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.145, 3), 0.0, 0.0, 0, 0, Vector2(0.566, 3), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 4 point_count = 4
[sub_resource type="CurveTexture" id="CurveTexture_auv7e"]
curve = SubResource("Curve_kl03u")
[sub_resource type="CurveTexture" id="CurveTexture_quj8c"] [sub_resource type="CurveTexture" id="CurveTexture_quj8c"]
curve = SubResource("Curve_oo5uu") curve = ExtResource("1_rxjwh")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_hjkte"] [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_hjkte"]
lifetime_randomness = 0.52 lifetime_randomness = 0.6
emission_shape = 3
emission_box_extents = Vector3(1, 1, 1)
direction = Vector3(0, 0, 0) direction = Vector3(0, 0, 0)
spread = 180.0 spread = 180.0
initial_velocity_min = 4.0 initial_velocity_min = -4.0
initial_velocity_max = 4.0 initial_velocity_max = 4.0
gravity = Vector3(0, 0, 0) gravity = Vector3(0, 0, 0)
scale_min = 0.3 scale_min = 0.75
scale_max = 1.5
scale_curve = SubResource("CurveTexture_quj8c") scale_curve = SubResource("CurveTexture_quj8c")
color_ramp = SubResource("GradientTexture1D_d6li3") color_ramp = SubResource("GradientTexture1D_d6li3")
emission_curve = SubResource("CurveTexture_auv7e")
turbulence_enabled = true turbulence_enabled = true
turbulence_noise_strength = 0.2
turbulence_noise_scale = 4.0
turbulence_noise_speed = Vector3(1, 1, 1) turbulence_noise_speed = Vector3(1, 1, 1)
turbulence_noise_speed_random = 1.41
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fliyi"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fliyi"]
shading_mode = 0
vertex_color_use_as_albedo = true vertex_color_use_as_albedo = true
emission_enabled = true disable_receive_shadows = true
billboard_mode = 3 billboard_mode = 3
billboard_keep_scale = true billboard_keep_scale = true
particles_anim_h_frames = 1 particles_anim_h_frames = 1
@ -45,7 +53,9 @@ radius = 1.0
height = 2.0 height = 2.0
[node name="ExplosionEffect" type="GPUParticles3D"] [node name="ExplosionEffect" type="GPUParticles3D"]
lifetime = 0.7 emitting = false
amount = 48
one_shot = true
explosiveness = 0.92 explosiveness = 0.92
fixed_fps = 60 fixed_fps = 60
interpolate = false interpolate = false

View File

@ -0,0 +1,5 @@
[gd_resource type="Curve" format=3 uid="uid://b5vptoxuq3dwb"]
[resource]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.145455, 1), 0.0, 0.0, 0, 0, Vector2(0.566234, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 4

View File

@ -2,8 +2,8 @@
[ext_resource type="Script" path="res://src/world/world.gd" id="1_ybjyx"] [ext_resource type="Script" path="res://src/world/world.gd" id="1_ybjyx"]
[ext_resource type="Script" path="res://src/player/world_player.gd" id="2_e743i"] [ext_resource type="Script" path="res://src/player/world_player.gd" id="2_e743i"]
[ext_resource type="PackedScene" uid="uid://cvs546kk7t7aw" path="res://levels/terrain_test/terrain_test.tscn" id="2_hbpi4"]
[ext_resource type="Script" path="res://src/ui/world_ui.gd" id="2_imewa"] [ext_resource type="Script" path="res://src/ui/world_ui.gd" id="2_imewa"]
[ext_resource type="PackedScene" uid="uid://bm2o3mex10v11" path="res://levels/debug_level/debug_level.tscn" id="2_qsk3q"]
[ext_resource type="Resource" uid="uid://crock3revdn73" path="res://src/player/debug_player.tres" id="3_pyw81"] [ext_resource type="Resource" uid="uid://crock3revdn73" path="res://src/player/debug_player.tres" id="3_pyw81"]
[ext_resource type="Script" path="res://src/world/play_manager/practice_manager.gd" id="5_yk526"] [ext_resource type="Script" path="res://src/world/play_manager/practice_manager.gd" id="5_yk526"]
[ext_resource type="PackedScene" uid="uid://byvjsvavbg5xe" path="res://src/ui/menus/pause_menu/pause_menu.tscn" id="7_0gd42"] [ext_resource type="PackedScene" uid="uid://byvjsvavbg5xe" path="res://src/ui/menus/pause_menu/pause_menu.tscn" id="7_0gd42"]
@ -155,7 +155,7 @@ _data = {
[node name="World" type="Node" groups=["WorldGroup"]] [node name="World" type="Node" groups=["WorldGroup"]]
script = ExtResource("1_ybjyx") script = ExtResource("1_ybjyx")
initial_level = ExtResource("2_hbpi4") initial_level = ExtResource("2_qsk3q")
manager = SubResource("Resource_hpydy") manager = SubResource("Resource_hpydy")
[node name="Level" type="Node3D" parent="."] [node name="Level" type="Node3D" parent="."]