From 8e2ada0cbeda2a14cba69caeceda8e1e2164e22b Mon Sep 17 00:00:00 2001 From: cow Date: Wed, 19 Jun 2024 22:16:10 -0400 Subject: [PATCH] Gravity done! --- globals.gd | 10 +++++---- player/player_node.tscn | 3 +++ player/seek_level.gd | 7 +++++-- primitives/gravity_changer/gravity_changer.gd | 13 ++++++++++++ .../gravity_changer/gravity_changer.tscn | 12 +++++++++++ rooms/yellow/room_yellow_floor.tscn | 21 ++++++++++++++++++- testscene.tscn | 6 +----- 7 files changed, 60 insertions(+), 12 deletions(-) create mode 100644 primitives/gravity_changer/gravity_changer.gd create mode 100644 primitives/gravity_changer/gravity_changer.tscn diff --git a/globals.gd b/globals.gd index 41e058b..6c9a4c2 100644 --- a/globals.gd +++ b/globals.gd @@ -1,6 +1,7 @@ extends Node -var global_down = Vector3(0,0,0) +# Random inital value to avoid divisions by 0 +var global_down = Vector3(0.01,0,0) var sensitivity = 0.004 var fov = 75 @@ -8,11 +9,12 @@ var fov = 75 func _ready(): set_global_down(Vector3(0,-1,0)) -func set_global_down(newDown: Vector3): - global_down = newDown.normalized() +func set_global_down(new_down: Vector3): + var old_down = global_down + global_down = new_down.normalized() if global_down.dot(Vector3.UP) == 1 || global_down.dot(Vector3.DOWN) == 1: # Applies jitter - global_down += Vector3(0.01,0,0) + global_down += old_down * 0.01 # REMINDER: # Layer 1 : everything diff --git a/player/player_node.tscn b/player/player_node.tscn index da40e5b..d02057c 100644 --- a/player/player_node.tscn +++ b/player/player_node.tscn @@ -60,3 +60,6 @@ texture = ExtResource("4_fuh05") [node name="MeshInstance3D" type="MeshInstance3D" parent="level"] transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0) mesh = SubResource("CapsuleMesh_1nqfw") + +[node name="true_level" type="Node3D" parent="level"] +top_level = true diff --git a/player/seek_level.gd b/player/seek_level.gd index 837f5a3..401fa2b 100644 --- a/player/seek_level.gd +++ b/player/seek_level.gd @@ -1,5 +1,6 @@ extends Node3D +var alpha = 0.2 # Called when the node enters the scene tree for the first time. func _ready(): @@ -7,6 +8,8 @@ func _ready(): # Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(_delta): +func _process(delta): #rotation=Globals.global_rotate - look_at(position + Globals.global_down) + $true_level.look_at($true_level.position + Globals.global_down) + + quaternion = quaternion.slerp($true_level.quaternion, 1 - alpha ** delta) diff --git a/primitives/gravity_changer/gravity_changer.gd b/primitives/gravity_changer/gravity_changer.gd new file mode 100644 index 0000000..31bf6db --- /dev/null +++ b/primitives/gravity_changer/gravity_changer.gd @@ -0,0 +1,13 @@ +extends Area3D + +@export var down = Vector3(0, -1, 0) + +# Called when the node enters the scene tree for the first time. +func _ready(): + body_entered.connect(_on_area_entered) + + +func _on_area_entered(body : Node3D) -> void: + var new_down = quaternion * down + print ("Changing gravity to: ", new_down) + Globals.set_global_down(new_down) diff --git a/primitives/gravity_changer/gravity_changer.tscn b/primitives/gravity_changer/gravity_changer.tscn new file mode 100644 index 0000000..6c08dc2 --- /dev/null +++ b/primitives/gravity_changer/gravity_changer.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=3 uid="uid://bnsyxg7xsjri1"] + +[ext_resource type="Script" path="res://primitives/gravity_changer/gravity_changer.gd" id="1_oxv17"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_hwemw"] + +[node name="gravity_changer" type="Area3D"] +collision_mask = 4 +script = ExtResource("1_oxv17") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource("BoxShape3D_hwemw") diff --git a/rooms/yellow/room_yellow_floor.tscn b/rooms/yellow/room_yellow_floor.tscn index 833ac93..a47866e 100644 --- a/rooms/yellow/room_yellow_floor.tscn +++ b/rooms/yellow/room_yellow_floor.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=9 format=3 uid="uid://bjs6r15h7ge62"] +[gd_scene load_steps=10 format=3 uid="uid://bjs6r15h7ge62"] [ext_resource type="Material" uid="uid://c2bppsuxirk3j" path="res://rooms/yellow/wall_yellow.tres" id="1_r5s2i"] [ext_resource type="Material" uid="uid://bk5bvrignm0qk" path="res://rooms/blue/emissive_lights.tres" id="3_36idt"] [ext_resource type="PackedScene" uid="uid://bcsejkg5vcjgl" path="res://primitives/skybox/skybox.blend" id="3_75x0b"] +[ext_resource type="PackedScene" uid="uid://bnsyxg7xsjri1" path="res://primitives/gravity_changer/gravity_changer.tscn" id="4_l8ock"] [sub_resource type="BoxShape3D" id="BoxShape3D_sn4y7"] size = Vector3(100, 100, 100) @@ -185,3 +186,21 @@ ambient_color_energy = 11.43 [node name="skybox" parent="." instance=ExtResource("3_75x0b")] transform = Transform3D(800, 0, 0, 0, 800, 0, 0, 0, 800, 0, 0, 0) + +[node name="GravityChanger" parent="." instance=ExtResource("4_l8ock")] +transform = Transform3D(100, 0, 0, 0, 1, 0, 0, 0, 100, 0, -50, 0) + +[node name="GravityChanger6" parent="." instance=ExtResource("4_l8ock")] +transform = Transform3D(100, 0, 0, 0, -4.37114e-08, -100, 0, 1, -4.37114e-06, 0, 0, -50) + +[node name="GravityChanger5" parent="." instance=ExtResource("4_l8ock")] +transform = Transform3D(100, 0, 0, 0, -4.37114e-08, 100, 0, -1, -4.37114e-06, 0, 0, 50) + +[node name="GravityChanger4" parent="." instance=ExtResource("4_l8ock")] +transform = Transform3D(-4.37114e-06, -1, 0, 100, -4.37114e-08, 0, 0, 0, 100, 50, 0, 0) + +[node name="GravityChanger3" parent="." instance=ExtResource("4_l8ock")] +transform = Transform3D(-4.37114e-06, 1, 0, -100, -4.37114e-08, 0, 0, 0, 100, -50, 0, 0) + +[node name="GravityChanger2" parent="." instance=ExtResource("4_l8ock")] +transform = Transform3D(-100, 8.74228e-08, 0, -8.74228e-06, -1, 0, 0, 0, 100, 0, 50, 0) diff --git a/testscene.tscn b/testscene.tscn index 2859b88..3e494cd 100644 --- a/testscene.tscn +++ b/testscene.tscn @@ -1,8 +1,7 @@ -[gd_scene load_steps=11 format=3 uid="uid://dosqj5u034nai"] +[gd_scene load_steps=10 format=3 uid="uid://dosqj5u034nai"] [ext_resource type="PackedScene" uid="uid://pyhlicd4a0ec" path="res://player/player_node.tscn" id="1_6ggf4"] [ext_resource type="PackedScene" uid="uid://bjs6r15h7ge62" path="res://rooms/yellow/room_yellow_floor.tscn" id="3_1isy3"] -[ext_resource type="PackedScene" uid="uid://ccbxd6724rlfj" path="res://rooms/blue/room_blue_floor.tscn" id="3_ql6ir"] [ext_resource type="PackedScene" uid="uid://5pnqeh3rmtel" path="res://ui/main_menu.tscn" id="4_7iuiw"] [ext_resource type="PackedScene" uid="uid://tdcxcrg6ktpl" path="res://objectives/objective.tscn" id="5_r66y3"] [ext_resource type="PackedScene" uid="uid://bkgacevpcgbtj" path="res://audio/music/music_engine.tscn" id="6_8a4j4"] @@ -22,8 +21,6 @@ points = PackedVector3Array(-0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, [node name="player" parent="." instance=ExtResource("1_6ggf4")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.3796, 0) -[node name="room_blue_floor" parent="." instance=ExtResource("3_ql6ir")] - [node name="s" type="RigidBody3D" parent="."] mass = 0.25 physics_material_override = SubResource("PhysicsMaterial_8njux") @@ -40,7 +37,6 @@ transform = Transform3D(3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0) shape = SubResource("ConvexPolygonShape3D_3iv3b") [node name="StaticBody3D" parent="." instance=ExtResource("3_1isy3")] -visible = false [node name="objective" parent="." instance=ExtResource("5_r66y3")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.1414, -48.7976, 15.7991)