From ffba3fce8cebd1552fdc910b4a38a47917d99a16 Mon Sep 17 00:00:00 2001 From: ElnuDev Date: Sat, 21 Oct 2023 19:46:01 -0700 Subject: [PATCH] Updates --- bullet.gd | 13 ++++++++++ bullet.tscn | 49 ++++++++++++++++++++++++++++++++++++++ gun.gd | 20 ++++++++++++++++ light.png | Bin 0 -> 49575 bytes light.png.import | 34 ++++++++++++++++++++++++++ main.tscn | 22 ++++++++++++++++- multiplayer_controller.gd | 1 - platform.tscn | 8 ++++++- player.gd | 7 +++++- player.tscn | 27 ++++++++++++++++++++- project.godot | 6 +++++ trail.gd | 20 ++++++++++++++++ 12 files changed, 202 insertions(+), 5 deletions(-) create mode 100644 bullet.gd create mode 100644 bullet.tscn create mode 100644 gun.gd create mode 100644 light.png create mode 100644 light.png.import create mode 100644 trail.gd diff --git a/bullet.gd b/bullet.gd new file mode 100644 index 0000000..3a99923 --- /dev/null +++ b/bullet.gd @@ -0,0 +1,13 @@ +extends CharacterBody2D + +@export var speed = 300.0 + +func _physics_process(delta): + var collision = move_and_collide(velocity * delta) + if collision: + if collision.get_position().x > position.x: + velocity.x = -velocity.x + else: + velocity.y = -velocity.y + collision_mask = 0 + $Trail.shrinking = true diff --git a/bullet.tscn b/bullet.tscn new file mode 100644 index 0000000..8b3897e --- /dev/null +++ b/bullet.tscn @@ -0,0 +1,49 @@ +[gd_scene load_steps=9 format=3 uid="uid://bxyl3aa8j8qc5"] + +[ext_resource type="Script" path="res://bullet.gd" id="1_eeg3n"] +[ext_resource type="Script" path="res://trail.gd" id="2_uq0x2"] +[ext_resource type="Texture2D" uid="uid://dbjqbgu6ru4m1" path="res://white.png" id="3_35obe"] +[ext_resource type="Texture2D" uid="uid://bda38sojncx5q" path="res://light.png" id="4_jdr6g"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_1y8mw"] + +[sub_resource type="Curve" id="Curve_qw0p6"] +_data = [Vector2(0, 1), 0.0, -1.0, 0, 1, Vector2(1, 0), -1.0, 0.0, 1, 0] +point_count = 2 + +[sub_resource type="Gradient" id="Gradient_s173t"] +colors = PackedColorArray(0.967279, 0.105729, 0.103599, 1, 0.980392, 0.541176, 0.160784, 1) + +[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_uqkxw"] +properties/0/path = NodePath("../..:position") +properties/0/spawn = true +properties/0/sync = true +properties/0/watch = false + +[node name="Bullet" type="CharacterBody2D"] +collision_layer = 4 +script = ExtResource("1_eeg3n") +speed = 2000.0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_1y8mw") + +[node name="Trail" type="Line2D" parent="."] +width_curve = SubResource("Curve_qw0p6") +gradient = SubResource("Gradient_s173t") +script = ExtResource("2_uq0x2") +MAX_LENGTH = 3 + +[node name="PointLight2D" type="PointLight2D" parent="Trail"] +scale = Vector2(0.1, 0.1) +color = Color(0.996078, 0.807843, 0.682353, 1) +energy = 2.5 +texture = ExtResource("4_jdr6g") + +[node name="Sprite2D" type="Sprite2D" parent="."] +visible = false +texture = ExtResource("3_35obe") + +[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."] +root_path = NodePath("../Trail/PointLight2D") +replication_config = SubResource("SceneReplicationConfig_uqkxw") diff --git a/gun.gd b/gun.gd new file mode 100644 index 0000000..f21256a --- /dev/null +++ b/gun.gd @@ -0,0 +1,20 @@ +extends Node2D + +@export var bullet: PackedScene +@export var spread = 10.0 + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(_delta): + if Input.is_action_just_pressed("fire"): + fire.rpc() + +@rpc("any_peer", "call_local") +func fire(): + var authority = get_parent().get_node("MultiplayerSynchronizer").get_multiplayer_authority() + if authority != get_multiplayer_authority(): + return; + var new_bullet = bullet.instantiate() + new_bullet.position = global_position + new_bullet.velocity = Vector2.from_angle(rotation + deg_to_rad(randf_range(-spread / 2, spread / 2))) * new_bullet.speed; + get_tree().root.add_child(new_bullet) + get_parent().x_velocity_offset = -600 * cos(rotation) diff --git a/light.png b/light.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a4362e651bc32554ba6fdddc30431673a06585 GIT binary patch literal 49575 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 BgX91J literal 0 HcmV?d00001 diff --git a/light.png.import b/light.png.import new file mode 100644 index 0000000..b17fb6d --- /dev/null +++ b/light.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bda38sojncx5q" +path="res://.godot/imported/light.png-06e94102f0cce323cff7daad56cf3030.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://light.png" +dest_files=["res://.godot/imported/light.png-06e94102f0cce323cff7daad56cf3030.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/main.tscn b/main.tscn index 9615fcb..183406f 100644 --- a/main.tscn +++ b/main.tscn @@ -1,8 +1,17 @@ -[gd_scene load_steps=4 format=3 uid="uid://r5n0cnh707fi"] +[gd_scene load_steps=7 format=3 uid="uid://r5n0cnh707fi"] [ext_resource type="Script" path="res://scene_manager.gd" id="1_ywv22"] [ext_resource type="PackedScene" uid="uid://b6olswaoek0bw" path="res://player.tscn" id="2_b15um"] [ext_resource type="PackedScene" uid="uid://dmbiy6vupfawk" path="res://platform.tscn" id="3_njyoi"] +[ext_resource type="Texture2D" uid="uid://dbjqbgu6ru4m1" path="res://white.png" id="4_4433x"] + +[sub_resource type="Environment" id="Environment_2bsl2"] +background_mode = 3 +glow_enabled = true +glow_intensity = 0.7 +glow_bloom = 1.0 + +[sub_resource type="CameraAttributesPhysical" id="CameraAttributesPhysical_loqya"] [node name="Main" type="Node2D"] script = ExtResource("1_ywv22") @@ -51,3 +60,14 @@ scale = Vector2(26.2654, 622.781) [node name="CollisionShape2D9" parent="." instance=ExtResource("3_njyoi")] position = Vector2(1499, 155) scale = Vector2(26.2654, 622.781) + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_2bsl2") +camera_attributes = SubResource("CameraAttributesPhysical_loqya") + +[node name="White" type="Sprite2D" parent="."] +modulate = Color(0.0352941, 0.0352941, 0.0352941, 1) +z_index = -7 +position = Vector2(508, 275.5) +scale = Vector2(38.125, 24.2812) +texture = ExtResource("4_4433x") diff --git a/multiplayer_controller.gd b/multiplayer_controller.gd index d0d7589..76bcc36 100644 --- a/multiplayer_controller.gd +++ b/multiplayer_controller.gd @@ -72,7 +72,6 @@ func _on_host_pressed(): }) - func _on_join_pressed(): peer = ENetMultiplayerPeer.new() peer.create_client($LineEditIP.text if $LineEditIP.text else "127.0.0.1", port) diff --git a/platform.tscn b/platform.tscn index a20a6b7..1a4d526 100644 --- a/platform.tscn +++ b/platform.tscn @@ -1,10 +1,13 @@ -[gd_scene load_steps=3 format=3 uid="uid://dmbiy6vupfawk"] +[gd_scene load_steps=4 format=3 uid="uid://dmbiy6vupfawk"] [ext_resource type="Texture2D" uid="uid://dbjqbgu6ru4m1" path="res://white.png" id="1_eu1eh"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_6fi6a"] size = Vector2(32, 32) +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_kdxkp"] +polygon = PackedVector2Array(16, 16, -16, 16, -16, -16, 16, -16) + [node name="CollisionShape2D" type="StaticBody2D"] [node name="CollisionShape2D" type="CollisionShape2D" parent="."] @@ -13,3 +16,6 @@ shape = SubResource("RectangleShape2D_6fi6a") [node name="Sprite2D" type="Sprite2D" parent="."] modulate = Color(0.105882, 0.105882, 0.105882, 1) texture = ExtResource("1_eu1eh") + +[node name="LightOccluder2D" type="LightOccluder2D" parent="."] +occluder = SubResource("OccluderPolygon2D_kdxkp") diff --git a/player.gd b/player.gd index af0e860..3412f5e 100644 --- a/player.gd +++ b/player.gd @@ -17,6 +17,8 @@ var last_grounded = 0 # Get the gravity from the project settings to be synced with RigidBody nodes. var gravity = ProjectSettings.get_setting("physics/2d/default_gravity") +var gun: Node2D + func _ready(): $MultiplayerSynchronizer.set_multiplayer_authority(name.to_int()) var username = GameManager.players[name.to_int()].name @@ -25,6 +27,7 @@ func _ready(): for i in username.length(): username_hash += username.unicode_at(i) $Sprite2D.modulate = Color.from_hsv((username_hash % 255) / 255.0, 0.5, 0.8) + gun = $Gun func _physics_process(delta): if $MultiplayerSynchronizer.get_multiplayer_authority() != multiplayer.get_unique_id(): @@ -34,7 +37,9 @@ func _physics_process(delta): if is_on_floor(): last_grounded = Time.get_ticks_msec() else: - velocity.y += gravity * delta * (limp_gravity_modifier if Input.is_action_pressed("limp") else 1) + velocity.y += gravity * delta * (limp_gravity_modifier if Input.is_action_pressed("limp") else 1.0) + + gun.look_at(get_global_mouse_position()) var grounded = Time.get_ticks_msec() - last_grounded < fox_time diff --git a/player.tscn b/player.tscn index 5de22fb..9815352 100644 --- a/player.tscn +++ b/player.tscn @@ -1,6 +1,9 @@ -[gd_scene load_steps=6 format=3 uid="uid://b6olswaoek0bw"] +[gd_scene load_steps=9 format=3 uid="uid://b6olswaoek0bw"] [ext_resource type="Script" path="res://player.gd" id="1_0p8o6"] +[ext_resource type="Script" path="res://gun.gd" id="2_847gu"] +[ext_resource type="PackedScene" uid="uid://bxyl3aa8j8qc5" path="res://bullet.tscn" id="3_ckwue"] +[ext_resource type="Texture2D" uid="uid://bda38sojncx5q" path="res://light.png" id="4_q0kom"] [sub_resource type="CompressedTexture2D" id="CompressedTexture2D_2xv6m"] load_path = "res://.godot/imported/white.png-d8533361663a5f8fe5200e5b5262a62d.ctex" @@ -16,6 +19,10 @@ properties/0/path = NodePath(".:position") properties/0/spawn = true properties/0/sync = true properties/0/watch = false +properties/1/path = NodePath("Gun:rotation") +properties/1/spawn = true +properties/1/sync = true +properties/1/watch = false [node name="Player" type="CharacterBody2D"] collision_layer = 2 @@ -26,9 +33,23 @@ fox_time = 100 limp_gravity_modifier = 3.0 [node name="Sprite2D" type="Sprite2D" parent="."] +light_mask = 0 scale = Vector2(1, 1.5) texture = SubResource("CompressedTexture2D_2xv6m") +[node name="Gun" type="Node2D" parent="."] +z_index = 1 +script = ExtResource("2_847gu") +bullet = ExtResource("3_ckwue") + +[node name="Sprite2D" type="Sprite2D" parent="Gun"] +position = Vector2(19, 0) +scale = Vector2(0.78125, 0.17375) +texture = SubResource("CompressedTexture2D_2xv6m") + +[node name="BulletSpawn" type="Node2D" parent="Gun"] +position = Vector2(31, 0) + [node name="CollisionShape2D" type="CollisionShape2D" parent="."] shape = SubResource("RectangleShape2D_8wbiu") @@ -55,3 +76,7 @@ grow_vertical = 2 size_flags_horizontal = 4 text = "Player" horizontal_alignment = 1 + +[node name="PointLight2D" type="PointLight2D" parent="."] +shadow_enabled = true +texture = ExtResource("4_q0kom") diff --git a/project.godot b/project.godot index 024e369..2696877 100644 --- a/project.godot +++ b/project.godot @@ -52,6 +52,11 @@ limp={ , 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) ] } +fire={ +"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":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} [physics] @@ -60,3 +65,4 @@ limp={ [rendering] renderer/rendering_method.mobile="gl_compatibility" +environment/defaults/default_clear_color=Color(0, 0, 0, 1) diff --git a/trail.gd b/trail.gd new file mode 100644 index 0000000..0328a3e --- /dev/null +++ b/trail.gd @@ -0,0 +1,20 @@ +extends Line2D + +var queue: Array +@export var MAX_LENGTH: int +var shrinking = false +@export var OPACITY_SHRINK_RATE = 5 +@export var SIZE_SHRINK_RATE = 5 + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + queue.push_front(global_position) + if queue.size() > MAX_LENGTH: + queue.pop_back() + clear_points() + for point in queue: + add_point(point - global_position) + if shrinking: + modulate.a = lerpf(modulate.a, 0, OPACITY_SHRINK_RATE * delta) + width = lerpf(width, 0, SIZE_SHRINK_RATE * delta) + $PointLight2D.energy = lerpf($PointLight2D.energy, 0, OPACITY_SHRINK_RATE * delta)