OverviewFilesCommitsIssuesDocsReleasesPeers

godot-marble_madness_demo commits / 05fd07b

Cleaned up various bugs Added tweening to camera zooms Added close contact dynamic light to marble
05fd07b198cec4702ef4020213f3d729e98a3a8b
by Dresk Spidflisk <dreskspidflisk@gmail.com> · 2022-01-19T23:28:25.000Z

Changed files (7) +119 -83

levels/level_script.gd +1 -8
……@@ -1,8 +1,5 @@
11extends Spatial
22
3var ballCamera : Camera
4var ball : RigidBody
5
63signal player_request_join
74
85
……@@ -13,11 +10,7 @@ signal player_request_join
1310
1411# Called when the node enters the scene tree for the first time.
1512func _ready():
16 # Attach Camera to Player Ball
17 ball = get_tree().get_current_scene().get_node("player_ball")
18 ballCamera = get_tree().get_current_scene().get_node("Camera")
19
20
13 pass
2114
2215# Called every frame. 'delta' is the elapsed time since the previous frame.
2316#func _process(delta):
levels/scenes/level_0.tscn +12 -9
……@@ -1,4 +1,4 @@
1[gd_scene load_steps=7 format=2]
1[gd_scene load_steps=9 format=2]
22
33[ext_resource path="res://assets/levels/level0/assets_level_0.tscn" type="PackedScene" id=1]
44[ext_resource path="res://levels/spawn_point/spawn_point.tscn" type="PackedScene" id=2]
……@@ -6,6 +6,8 @@
66[ext_resource path="res://player/ball/player_ball.tscn" type="PackedScene" id=4]
77[ext_resource path="res://special_input.gd" type="Script" id=5]
88[ext_resource path="res://ui/debug/ball/ui_debug_ball.tscn" type="PackedScene" id=6]
9[ext_resource path="res://player/camera/player_camera.tscn" type="PackedScene" id=7]
10[ext_resource path="res://player/camera/player_camera.gd" type="Script" id=8]
911
1012[node name="Spatial" type="Spatial"]
1113script = ExtResource( 3 )
……@@ -13,15 +15,13 @@ script = ExtResource( 3 )
1315[node name="level_0" parent="." instance=ExtResource( 1 )]
1416transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 1.178, 1.877, -3.673 )
1517
16[node name="Position3D" type="Position3D" parent="."]
18[node name="player_ball" parent="." instance=ExtResource( 4 )]
19transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.733258, 2.26544, -8.91449 )
1720
18[node name="player_ball" parent="Position3D" instance=ExtResource( 4 )]
19transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.733258, 1.63307, -8.91449 )
20
21[node name="ballCamera" type="Camera" parent="Position3D"]
22transform = Transform( 1, 0, 0, 0, 0.819152, 0.573577, 0, -0.573577, 0.819152, 1.032, 15, 13.59 )
23fov = 10.0
24size = 17.0
21[node name="player_camera" parent="." instance=ExtResource( 7 )]
22pause_mode = 2
23script = ExtResource( 8 )
24player_ball = NodePath("../player_ball")
2525
2626[node name="spawn_point" parent="." instance=ExtResource( 2 )]
2727transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 11.446, 6.01065, -19.7949 )
……@@ -40,3 +40,6 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 17.8105, 5.36633, -12.0799 )
4040script = ExtResource( 5 )
4141
4242[node name="DebugUI" parent="." instance=ExtResource( 6 )]
43
44[node name="CameraTween" type="Tween" parent="."]
45pause_mode = 2
player/ball/player_ball.gd +42 -50
……@@ -1,81 +1,73 @@
11extends RigidBody
22
33var rolling_force = 10
4var rolling_force_max : float = 50
45var bFirstPersonCamera = false
56var bDebugPaused : bool = false
67var ballCameraOriginalOrigin : Vector3
7var fCameraGoalFoV : float = 10
88
9var vBallCameraRotation : Vector3
10
11var ballCamera : Camera
129var lVelocity : Label
13var lCameraAngle : Label
10var lAngularVelocity : Label
1411
1512func _ready():
16 ballCamera = $ballCamera
17 if !ballCamera:
18 ballCamera = get_tree().get_current_scene().get_node("Position3D").get_node("ballCamera")
19 if !ballCamera:
20 ballCamera = get_tree().get_current_scene().get_node("ballCamera")
21 if !ballCamera:
22 ballCamera = get_node("ballCamera")
23 ballCamera.set_as_toplevel(true)
24 lVelocity = get_tree().get_current_scene().get_node("DebugUI").get_node("Velocity_Real")
25 lCameraAngle = get_tree().get_current_scene().get_node("DebugUI").get_node("CameraAngle_Real")
26 # Backup Camera Transform
27 if ballCamera:
28 ballCameraOriginalOrigin = ballCamera.global_transform.origin
29 vBallCameraRotation = ballCamera.rotation
13 lVelocity = get_tree().get_current_scene().get_node("DebugUI").get_node("BallVelocity_Value")
14 lAngularVelocity = get_tree().get_current_scene().get_node("DebugUI").get_node("BallAngularVelocity_Value")
3015
31func _process(delta: float) -> void:
32 ballCamera.fov = move_toward(ballCamera.fov, fCameraGoalFoV, 8 * delta)
16func _process(_delta: float) -> void:
17 pass
3318
19func checkAngularVelocity(delta : float, angVelocity : float, bAdd : bool) -> float:
20 if bAdd:
21 angVelocity = angVelocity + rolling_force*delta
22 else:
23 angVelocity = angVelocity - rolling_force*delta
24
25 var cappedVelocity = min(rolling_force_max, abs(angVelocity) )
26 if (angVelocity < 0):
27 return cappedVelocity * -1
28 else:
29 return cappedVelocity
3430
3531func _physics_process(delta: float) -> void:
36
37 ballCamera.translate( Vector3(0.001, 0.0, 0.0))
38 #if ballCamera:
39 # ballCamera.rotation = (vBallCameraRotation)
40
41 if Input.is_action_just_pressed("camera_toggle_fps"):
42 if bFirstPersonCamera == true:
43 bFirstPersonCamera = false
44 ballCamera.global_transform.origin = ballCameraOriginalOrigin
45 else:
46 bFirstPersonCamera = true
32 #if Input.is_action_just_pressed("camera_toggle_fps"):
33 # if bFirstPersonCamera == true:
34 # bFirstPersonCamera = false
35 # ballCamera.global_transform.origin = ballCameraOriginalOrigin
36 # else:
37 # bFirstPersonCamera = true
4738
4839 if bDebugPaused:
4940 return
5041
51 if false:
52 ballCamera.global_transform.origin = lerp(
53 ballCamera.global_transform.origin,
54 global_transform.origin, 1.0
55 )
56 ballCamera.global_transform.origin = lerp(
57 ballCamera.global_transform.origin,
58 global_transform.origin, 1.0
59 )
42 #if false:
43 # ballCamera.global_transform.origin = lerp(
44 # ballCamera.global_transform.origin,
45 # global_transform.origin, 1.0
46 # )
47 # ballCamera.global_transform.origin = lerp(
48 # ballCamera.global_transform.origin,
49 # global_transform.origin, 1.0
50 # )
6051
61 if Input.is_action_just_released("camera_zoom_in"):
62 fCameraGoalFoV += -2
63 elif Input.is_action_just_released("camera_zoom_out"):
64 fCameraGoalFoV += 2
52
6553
6654 #$FloorCheck.global_transform.origin = global_transform.origin
6755 if Input.is_action_pressed("ball_roll_up"):
68 angular_velocity.x -= rolling_force*delta
56 # angular_velocity.x = checkAngularVelocity(delta, angular_velocity.x, false)
57 angular_velocity.x = clamp(angular_velocity.x - rolling_force*delta, rolling_force_max * -1, rolling_force_max)
6958 elif Input.is_action_pressed("ball_roll_down"):
70 angular_velocity.x += rolling_force*delta
59 # angular_velocity.x = checkAngularVelocity(delta, angular_velocity.x, true)
60 angular_velocity.x = clamp(angular_velocity.x + rolling_force*delta, rolling_force_max * -1, rolling_force_max)
7161 if Input.is_action_pressed("ball_roll_left"):
72 angular_velocity.z += rolling_force*delta
62 #angular_velocity.z = checkAngularVelocity(delta, angular_velocity.z, true)
63 angular_velocity.z = clamp(angular_velocity.z + rolling_force*delta, rolling_force_max * -1, rolling_force_max)
7364 elif Input.is_action_pressed("ball_roll_right"):
74 angular_velocity.z -= rolling_force*delta
65 #angular_velocity.z = checkAngularVelocity(delta, angular_velocity.z, false)
66 angular_velocity.z = clamp(angular_velocity.z - rolling_force*delta, rolling_force_max * -1, rolling_force_max)
7567
7668 #if Input.is_action_just_pressed("jump") and $FloorCheck.is_colliding():
7769 # apply_impulse(Vector3(), Vector3.UP*1000)
7870
7971 # Update Debug UI
8072 lVelocity.text = String(self.linear_velocity)
81 lCameraAngle.text = String(self.rotation)
73 lAngularVelocity.text = String(self.angular_velocity)
player/ball/player_ball.tscn +6 -0
……@@ -17,3 +17,9 @@ transform = Transform( 0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0 )
1717shape = SubResource( 1 )
1818
1919[node name="asset" parent="." instance=ExtResource( 1 )]
20
21[node name="OmniLight" type="OmniLight" parent="."]
22light_color = Color( 0, 0.717647, 1, 1 )
23light_energy = 16.0
24light_bake_mode = 0
25omni_range = 0.174
player/camera/player_camera.gd +35 -0
……@@ -0,0 +1,35 @@
1extends Camera
2
3export(NodePath) var player_ball : NodePath
4onready var ball = get_node(player_ball)
5onready var offset = ball.to_local(global_transform.origin)
6
7var fCameraGoalFoV : float
8var lCameraAngle : Label
9var tween : Tween
10
11func _ready():
12 fCameraGoalFoV = fov
13 lCameraAngle = get_tree().get_current_scene().get_node("DebugUI").get_node("CameraAngle_Real")
14 tween = get_tree().get_current_scene().get_node("CameraTween")
15
16func _process(_delta):
17 # Update Camera Position
18 global_transform.origin.y = ball.global_transform.origin.y + offset.y + 1.00
19 global_transform.origin.z = ball.global_transform.origin.z + offset.z
20
21 # Check for Camera-Related Inputs
22 if Input.is_action_just_released("camera_zoom_in"):
23 fCameraGoalFoV = max(5, fCameraGoalFoV - 2)
24 tween.remove_all()
25 tween.interpolate_property(self, "fov",
26 self.fov, fCameraGoalFoV, 1,
27 Tween.TRANS_QUINT, Tween.EASE_OUT)
28 tween.start()
29 elif Input.is_action_just_released("camera_zoom_out"):
30 fCameraGoalFoV = min(20, fCameraGoalFoV + 2)
31 tween.remove_all()
32 tween.interpolate_property(self, "fov",
33 self.fov, fCameraGoalFoV, 1,
34 Tween.TRANS_QUINT, Tween.EASE_OUT)
35 tween.start()
player/camera/player_camera.tscn +5 -0
……@@ -0,0 +1,5 @@
1[gd_scene format=2]
2
3[node name="Camera" type="Camera"]
4transform = Transform( 1, 0, 0, 0, 0.819152, 0.573577, 0, -0.573577, 0.819152, 1.032, 15, 13.59 )
5fov = 10.0
ui/debug/ball/ui_debug_ball.tscn +18 -16
……@@ -7,33 +7,35 @@ __meta__ = {
77"_edit_use_anchors_": false
88}
99
10[node name="Velocity" type="Label" parent="."]
10[node name="BallVelocity" type="Label" parent="."]
11margin_left = 39.0
1112margin_top = 52.0
12margin_right = 104.0
13margin_right = 178.0
1314margin_bottom = 66.0
14text = "Velocity :"
15text = "Ball Velocity :"
1516align = 2
1617
17[node name="CameraAngle" type="Label" parent="."]
18margin_top = 77.0
19margin_right = 104.0
20margin_bottom = 91.0
21text = "Camera Angle :"
22align = 2
23
24[node name="Velocity_Real" type="Label" parent="."]
25margin_left = 111.0
18[node name="BallVelocity_Value" type="Label" parent="."]
19margin_left = 186.0
2620margin_top = 52.0
27margin_right = 565.0
21margin_right = 640.0
2822margin_bottom = 66.0
2923__meta__ = {
3024"_edit_use_anchors_": false
3125}
3226
33[node name="CameraAngle_Real" type="Label" parent="."]
34margin_left = 111.0
27[node name="BallAngularVelocity" type="Label" parent="."]
28margin_left = 39.0
29margin_top = 77.0
30margin_right = 178.0
31margin_bottom = 91.0
32text = "Ball Angular Velocity :"
33align = 2
34
35[node name="BallAngularVelocity_Value" type="Label" parent="."]
36margin_left = 186.0
3537margin_top = 77.0
36margin_right = 565.0
38margin_right = 640.0
3739margin_bottom = 91.0
3840__meta__ = {
3941"_edit_use_anchors_": false