finished physics gun
This commit is contained in:
@@ -11,7 +11,7 @@ config_version=5
|
||||
[application]
|
||||
|
||||
config/name="Bitmaze Adventure"
|
||||
run/main_scene="res://scenes/menus/main_menu.tscn"
|
||||
run/main_scene="res://scenes/levels/debug.tscn"
|
||||
config/features=PackedStringArray("4.2", "Forward Plus")
|
||||
boot_splash/bg_color=Color(0, 0, 0, 1)
|
||||
boot_splash/show_image=false
|
||||
@@ -88,15 +88,28 @@ gravity_activate={
|
||||
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(337, 22),"global_position":Vector2(341, 63),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||
]
|
||||
}
|
||||
gravity_change={
|
||||
gravity_freeze={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":2,"position":Vector2(338, 10),"global_position":Vector2(342, 51),"factor":1.0,"button_index":2,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||
]
|
||||
}
|
||||
gravity_push={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":8,"position":Vector2(248, 23),"global_position":Vector2(254, 85),"factor":1.0,"button_index":4,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
gravity_pull={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":16,"position":Vector2(206, 28),"global_position":Vector2(212, 90),"factor":1.0,"button_index":5,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194326,"key_label":0,"unicode":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[rendering]
|
||||
|
||||
anti_aliasing/quality/msaa_3d=1
|
||||
anti_aliasing/quality/screen_space_aa=1
|
||||
anti_aliasing/quality/use_taa=true
|
||||
occlusion_culling/use_occlusion_culling=true
|
||||
|
@@ -101,7 +101,7 @@ section_length = 0.3
|
||||
section_segments = 2
|
||||
curve = SubResource("Curve_xucvk")
|
||||
|
||||
[node name="GravityGun" type="CanvasLayer"]
|
||||
[node name="GravityGunLayer" type="CanvasLayer"]
|
||||
follow_viewport_enabled = true
|
||||
script = ExtResource("1_0upyy")
|
||||
|
||||
@@ -186,3 +186,5 @@ trail_enabled = true
|
||||
trail_lifetime = 0.8
|
||||
process_material = SubResource("ParticleProcessMaterial_5ccgj")
|
||||
draw_pass_1 = SubResource("RibbonTrailMesh_fwaab")
|
||||
|
||||
[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]
|
||||
|
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=18 format=3 uid="uid://ckad8stc13n83"]
|
||||
[gd_scene load_steps=20 format=3 uid="uid://ckad8stc13n83"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://gg5ph541e4p3" path="res://scenes/player.tscn" id="1_2585i"]
|
||||
[ext_resource type="PackedScene" uid="uid://ddwkhfly2xyyt" path="res://assets/models/interior.obj" id="1_lphcl"]
|
||||
@@ -39,7 +39,14 @@ ao_enabled = true
|
||||
ao_texture = ExtResource("8_wcubh")
|
||||
uv1_scale = Vector3(8, 30, 8)
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_wyr1d"]
|
||||
size = Vector3(4, 0.2, 5)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_lygjd"]
|
||||
size = Vector3(4, 0.2, 5)
|
||||
|
||||
[node name="Debug" type="Node3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1)
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(0.707107, -0.707107, 0, 0.5, 0.5, 0.707107, -0.5, -0.5, 0.707107, 0, 0, 0)
|
||||
@@ -52,36 +59,67 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0)
|
||||
[node name="Hallway" parent="interior" index="0"]
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_dkjw0")
|
||||
|
||||
[node name="StaticBody3D" parent="interior/Hallway" index="0"]
|
||||
collision_layer = 7
|
||||
collision_mask = 7
|
||||
|
||||
[node name="Cube" parent="interior" index="1"]
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_cl8ik")
|
||||
|
||||
[node name="StaticBody3D" parent="interior/Cube" index="0"]
|
||||
collision_layer = 7
|
||||
collision_mask = 7
|
||||
collision_priority = 2000.0
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("1_2585i")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 5.23956)
|
||||
|
||||
[node name="ButtonStand" parent="." instance=ExtResource("4_cruoa")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0.7, 0)
|
||||
one_shot = true
|
||||
|
||||
[node name="CompletionCounter" parent="." node_paths=PackedStringArray("nodes_needed") instance=ExtResource("5_lo1l3")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0617981, 3.05379, 6.24098)
|
||||
nodes_needed = [NodePath("../ButtonStand"), NodePath("../ButtonStand2"), NodePath("../ButtonStand3")]
|
||||
nodes_needed = [NodePath("../ButtonStand2"), NodePath("../ButtonStand3")]
|
||||
|
||||
[node name="Door" parent="." instance=ExtResource("6_853p2")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.1, 1.58488, 6.64)
|
||||
|
||||
[node name="ButtonStand2" parent="." instance=ExtResource("4_cruoa")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.03802, 0.7, 6)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.03802, 0.7, 4)
|
||||
|
||||
[node name="ButtonStand3" parent="." instance=ExtResource("4_cruoa")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0.7, 2)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 4.7, 1)
|
||||
|
||||
[node name="Cube" parent="." instance=ExtResource("15_h1ivu")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
|
||||
collision_priority = 2.0
|
||||
|
||||
[node name="Cube2" parent="." instance=ExtResource("15_h1ivu")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 1, 0)
|
||||
collision_priority = 2.0
|
||||
|
||||
[node name="Cube3" parent="." instance=ExtResource("15_h1ivu")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 1, -2)
|
||||
collision_priority = 2.0
|
||||
|
||||
[node name="Cube4" parent="." instance=ExtResource("15_h1ivu")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 1, -2)
|
||||
collision_priority = 2.0
|
||||
|
||||
[node name="Cube5" parent="." instance=ExtResource("15_h1ivu")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, -2)
|
||||
collision_priority = 2.0
|
||||
|
||||
[node name="Cube6" parent="." instance=ExtResource("15_h1ivu")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 1, -2)
|
||||
collision_priority = 2.0
|
||||
|
||||
[node name="DebugPlane" type="StaticBody3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.9, 3.9, 0)
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="DebugPlane"]
|
||||
mesh = SubResource("BoxMesh_wyr1d")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="DebugPlane"]
|
||||
shape = SubResource("BoxShape3D_lygjd")
|
||||
|
||||
[connection signal="lock" from="CompletionCounter" to="Door" method="close"]
|
||||
[connection signal="unlock" from="CompletionCounter" to="Door" method="open"]
|
||||
|
||||
|
@@ -1,10 +1,18 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://ced2w03t8er5k"]
|
||||
[gd_scene load_steps=4 format=3 uid="uid://ced2w03t8er5k"]
|
||||
|
||||
[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_b2i4c"]
|
||||
rough = true
|
||||
absorbent = true
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_flqji"]
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_evnha"]
|
||||
|
||||
[node name="Cube" type="RigidBody3D" groups=["pushables"]]
|
||||
mass = 1.5
|
||||
physics_material_override = SubResource("PhysicsMaterial_b2i4c")
|
||||
lock_rotation = true
|
||||
continuous_cd = true
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("BoxShape3D_flqji")
|
||||
|
@@ -63,6 +63,8 @@ _data = {
|
||||
}
|
||||
|
||||
[node name="ButtonStand" type="StaticBody3D"]
|
||||
collision_layer = 7
|
||||
collision_mask = 7
|
||||
script = ExtResource("1_gkcm2")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
|
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://gg5ph541e4p3"]
|
||||
[gd_scene load_steps=9 format=3 uid="uid://gg5ph541e4p3"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/player.gd" id="1_8d33x"]
|
||||
[ext_resource type="PackedScene" uid="uid://cl6gw3huejnrl" path="res://scenes/gravity_gun.tscn" id="2_ahuce"]
|
||||
@@ -22,6 +22,8 @@ material = SubResource("ShaderMaterial_52bjo")
|
||||
flip_faces = true
|
||||
size = Vector2(2, 2)
|
||||
|
||||
[sub_resource type="SeparationRayShape3D" id="SeparationRayShape3D_fvhib"]
|
||||
|
||||
[node name="Player" type="CharacterBody3D"]
|
||||
script = ExtResource("1_8d33x")
|
||||
|
||||
@@ -40,13 +42,18 @@ script = ExtResource("2_jg7te")
|
||||
|
||||
[node name="SpringArm3D" type="SpringArm3D" parent="Camera3D"]
|
||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
|
||||
collision_mask = 2
|
||||
shape = SubResource("SeparationRayShape3D_fvhib")
|
||||
spring_length = 10.0
|
||||
|
||||
[node name="GravityGunGoal" type="Node3D" parent="Camera3D/SpringArm3D"]
|
||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -8.69771e-07, 0, 9.94902)
|
||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -8.1134e-07, 0, 9.28065)
|
||||
|
||||
[node name="RayCast3D" type="RayCast3D" parent="Camera3D"]
|
||||
target_position = Vector3(0, 0, -10)
|
||||
debug_shape_custom_color = Color(0, 0, 0, 0)
|
||||
|
||||
[node name="GravityGun" parent="." instance=ExtResource("2_ahuce")]
|
||||
[node name="GravityGunLayer" parent="." node_paths=PackedStringArray("player") instance=ExtResource("2_ahuce")]
|
||||
player = NodePath("..")
|
||||
|
||||
[editable path="GravityGunLayer"]
|
||||
|
@@ -1,6 +1,35 @@
|
||||
extends CanvasLayer
|
||||
class_name GravityGunLayer
|
||||
|
||||
@onready var gravity_particles: GPUParticles3D = $SubViewportContainer/SubViewport/Node3D/Camera3D/MeshInstance3D/GravityParticles
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
gravity_particles.visible = Input.is_action_pressed("gravity_activate")
|
||||
@export var player: Player
|
||||
var collider: RigidBody3D
|
||||
|
||||
var spring_length_cap: float
|
||||
|
||||
func _on_visibility_changed() -> void:
|
||||
set_physics_process(visible) # Deaktiviert die Schleife unten wenn die Gun unsichtbar ist.
|
||||
func _ready() -> void:
|
||||
# Führt sie auch am Anfang aus wenn sich die visibility noch nicht geändert hat
|
||||
_on_visibility_changed()
|
||||
|
||||
await player.ready
|
||||
spring_length_cap = player.spring_arm.spring_length
|
||||
|
||||
func _physics_process(_delta):
|
||||
if player.spring_arm.get_hit_length() > 1.5 && Input.is_action_pressed("gravity_activate"):
|
||||
gravity_particles.visible = true
|
||||
if collider:
|
||||
collider.global_position = player.goal.global_position
|
||||
elif player.raycast.get_collider() is RigidBody3D:
|
||||
collider = player.raycast.get_collider()
|
||||
if Input.is_action_pressed("gravity_push") || Input.is_action_just_pressed("gravity_push"):
|
||||
player.spring_arm.spring_length += .5
|
||||
if Input.is_action_pressed("gravity_pull") || Input.is_action_just_pressed("gravity_pull"):
|
||||
player.spring_arm.spring_length -= .5
|
||||
player.spring_arm.spring_length = clamp(player.spring_arm.spring_length,2,spring_length_cap)
|
||||
else:
|
||||
gravity_particles.visible = false
|
||||
collider = null
|
||||
|
||||
|
@@ -8,12 +8,12 @@ const JUMP_VELOCITY = 4.5
|
||||
var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity")
|
||||
|
||||
@onready var camera: Camera3D = $Camera3D
|
||||
@onready var gun_cam: Camera3D = $GravityGun/SubViewportContainer/SubViewport/Node3D/Camera3D
|
||||
|
||||
@onready var gun_cam: Camera3D = $GravityGunLayer/SubViewportContainer/SubViewport/Node3D/Camera3D
|
||||
var camera_senitivity: float = 0.5
|
||||
|
||||
@onready var gravity_gun_goal: Node3D = $Camera3D/SpringArm3D/GravityGunGoal
|
||||
@onready var raycast: RayCast3D = $Camera3D/RayCast3D
|
||||
@onready var goal: Node3D = $Camera3D/SpringArm3D/GravityGunGoal
|
||||
@onready var spring_arm: SpringArm3D = $Camera3D/SpringArm3D
|
||||
|
||||
func _ready() -> void:
|
||||
capture()
|
||||
|
Reference in New Issue
Block a user