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")]
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="."]
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
enum Type {
DEBUG = -1,
NONE,
BASIC,
PLASMA,
@ -221,12 +222,14 @@ func _on_sleeping_state_changed() -> void:
if sleeping:
# Trigger to reassign on wake
_awake = false
linear_velocity = Vector3.ZERO
angular_velocity = Vector3.ZERO
linear_damp = 0.0
angular_damp = 0.0
func _manual_sleep() -> void:
freeze = true
linear_velocity = Vector3.ZERO
angular_velocity = Vector3.ZERO
manual_sleep_timer.start()

View File

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

View File

@ -89,6 +89,12 @@ func _finish_scene_load(instance: Node) -> 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:
loader_transition.play("fade_in")

View File

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

View File

@ -6,6 +6,7 @@ signal ball_changed(ball: GameBall)
## Scenes for each type of ball.
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.PLASMA: preload("res://src/equipment/balls/plasma_ball/plasma_ball.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 Y_OFFSET := {
GameBall.Type.DEBUG: 0,
GameBall.Type.NONE: 50,
GameBall.Type.BASIC: 18,
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"]
offsets = PackedFloat32Array(0, 0.0850112, 0.693512, 0.760626)
colors = PackedColorArray(3, 3, 3, 1, 2, 2, 0.6, 1, 1, 0.0623333, 0.03, 1, 0, 0, 0, 1)
offsets = PackedFloat32Array(0, 0.148459, 0.29972, 0.840336)
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"]
gradient = SubResource("Gradient_tuj3x")
[sub_resource type="Curve" id="Curve_oo5uu"]
_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]
[sub_resource type="Curve" id="Curve_kl03u"]
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
[sub_resource type="CurveTexture" id="CurveTexture_auv7e"]
curve = SubResource("Curve_kl03u")
[sub_resource type="CurveTexture" id="CurveTexture_quj8c"]
curve = SubResource("Curve_oo5uu")
curve = ExtResource("1_rxjwh")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_hjkte"]
lifetime_randomness = 0.52
emission_shape = 3
emission_box_extents = Vector3(1, 1, 1)
lifetime_randomness = 0.6
direction = Vector3(0, 0, 0)
spread = 180.0
initial_velocity_min = 4.0
initial_velocity_min = -4.0
initial_velocity_max = 4.0
gravity = Vector3(0, 0, 0)
scale_min = 0.3
scale_min = 0.75
scale_max = 1.5
scale_curve = SubResource("CurveTexture_quj8c")
color_ramp = SubResource("GradientTexture1D_d6li3")
emission_curve = SubResource("CurveTexture_auv7e")
turbulence_enabled = true
turbulence_noise_strength = 0.2
turbulence_noise_scale = 4.0
turbulence_noise_speed = Vector3(1, 1, 1)
turbulence_noise_speed_random = 1.41
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fliyi"]
shading_mode = 0
vertex_color_use_as_albedo = true
emission_enabled = true
disable_receive_shadows = true
billboard_mode = 3
billboard_keep_scale = true
particles_anim_h_frames = 1
@ -45,7 +53,9 @@ radius = 1.0
height = 2.0
[node name="ExplosionEffect" type="GPUParticles3D"]
lifetime = 0.7
emitting = false
amount = 48
one_shot = true
explosiveness = 0.92
fixed_fps = 60
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/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="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="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"]
@ -155,7 +155,7 @@ _data = {
[node name="World" type="Node" groups=["WorldGroup"]]
script = ExtResource("1_ybjyx")
initial_level = ExtResource("2_hbpi4")
initial_level = ExtResource("2_qsk3q")
manager = SubResource("Resource_hpydy")
[node name="Level" type="Node3D" parent="."]