From dd0b5aa2fe95776d329df9b7e8d39b81ec4c0ecd Mon Sep 17 00:00:00 2001 From: Ichicoro Date: Sun, 8 Jan 2023 02:25:48 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=AB=20Add=20WIP=20peashooter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/island_model/texture_1.png.import | 8 +++-- player/OnHand.gd | 11 +++--- player/Player.gd | 11 ++++-- player/Player.tscn | 39 ++++++++++---------- player/{ => onhand}/BaseWeapon.gd | 6 ++++ player/onhand/PeaShooter.gd | 46 ++++++++++++++++++++++++ player/onhand/PeaShooter.tscn | 10 ++++++ project.godot | 13 ++++++- 8 files changed, 112 insertions(+), 32 deletions(-) rename player/{ => onhand}/BaseWeapon.gd (89%) create mode 100644 player/onhand/PeaShooter.gd create mode 100644 player/onhand/PeaShooter.tscn diff --git a/assets/island_model/texture_1.png.import b/assets/island_model/texture_1.png.import index 4c9810d..16e4c77 100644 --- a/assets/island_model/texture_1.png.import +++ b/assets/island_model/texture_1.png.import @@ -3,15 +3,17 @@ importer="texture" type="CompressedTexture2D" uid="uid://cdpn34mdaq545" -path="res://.godot/imported/texture_1.png-9fbd3af4843d9622d58b51ee93c19f7f.ctex" +path.s3tc="res://.godot/imported/texture_1.png-9fbd3af4843d9622d58b51ee93c19f7f.s3tc.ctex" +path.etc2="res://.godot/imported/texture_1.png-9fbd3af4843d9622d58b51ee93c19f7f.etc2.ctex" metadata={ -"vram_texture": false +"imported_formats": ["s3tc", "etc2"], +"vram_texture": true } [deps] source_file="res://assets/island_model/texture_1.png" -dest_files=["res://.godot/imported/texture_1.png-9fbd3af4843d9622d58b51ee93c19f7f.ctex"] +dest_files=["res://.godot/imported/texture_1.png-9fbd3af4843d9622d58b51ee93c19f7f.s3tc.ctex", "res://.godot/imported/texture_1.png-9fbd3af4843d9622d58b51ee93c19f7f.etc2.ctex"] [params] diff --git a/player/OnHand.gd b/player/OnHand.gd index 18215e9..5ce2111 100644 --- a/player/OnHand.gd +++ b/player/OnHand.gd @@ -19,13 +19,14 @@ var player: Player: var weapons: Array = [ + load("res://player/onhand/PeaShooter.tscn").instantiate() # load("res://Player/Weapons/Arm.tscn").instantiate(), # load("res://Player/Weapons/ak47.tscn").instantiate(), ] func _ready() -> void: - self._switch_weapon(BaseWeapon.WeaponSlot.THREE) + self._switch_weapon(BaseWeapon.WeaponSlot.ONE) func _process(delta: float) -> void: @@ -40,10 +41,10 @@ func _on_player_set(player: Player) -> void: func _input(event: InputEvent) -> void: if Input.is_action_just_pressed("slot1"): _switch_weapon(BaseWeapon.WeaponSlot.ONE) - elif Input.is_action_just_pressed("slot2"): - _switch_weapon(BaseWeapon.WeaponSlot.TWO) - elif Input.is_action_just_pressed("slot3"): - _switch_weapon(BaseWeapon.WeaponSlot.THREE) + # elif Input.is_action_just_pressed("slot2"): + # _switch_weapon(BaseWeapon.WeaponSlot.TWO) + # elif Input.is_action_just_pressed("slot3"): + # _switch_weapon(BaseWeapon.WeaponSlot.THREE) func _switch_weapon(slot: BaseWeapon.WeaponSlot): diff --git a/player/Player.gd b/player/Player.gd index 5e87b82..5893971 100644 --- a/player/Player.gd +++ b/player/Player.gd @@ -3,7 +3,7 @@ class_name Player const SPEED = 5.0 const JUMP_VELOCITY = 4.5 -const MOUSE_SENSITIVITY = 2.25 +const MOUSE_SENSITIVITY = 5 # 2.25 const MAX_AIR_WISH_SPEED = 20 const AIR_ACCELERATE = 100 # Hu/39.97 @@ -21,7 +21,7 @@ const AIR_ACCELERATE = 100 # Hu/39.97 get: return OnHand.active_weapon # DEBUG NODES -@onready var debug_speed_label = $HUD/Speed_Label +@onready var ammo_label = $HUD/AmmoLabel var last_frame_input_data: PlayerInputData = PlayerInputData.new() var input_data: PlayerInputData = PlayerInputData.new() @@ -102,7 +102,12 @@ func _physics_process(delta): # delta # ) * 2.5 - debug_speed_label.text = "%0.2f" % current_speed + if active_weapon and active_weapon.ammoType != BaseWeapon.AmmoType.NONE: + ammo_label.show() + if active_weapon is PeaShooter: + ammo_label.text = "%d peas left" % active_weapon.remaining + else: + ammo_label.hide() move_and_slide() diff --git a/player/Player.tscn b/player/Player.tscn index 372c1c4..dd04c02 100644 --- a/player/Player.tscn +++ b/player/Player.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=16 format=3 uid="uid://b5i1sqd88wlle"] +[gd_scene load_steps=17 format=3 uid="uid://b5i1sqd88wlle"] [ext_resource type="Script" path="res://player/Player.gd" id="1_rujcr"] [ext_resource type="Script" path="res://player/Head.gd" id="2_ohlgu"] [ext_resource type="Script" path="res://player/OnHand.gd" id="3_3rcjl"] +[ext_resource type="Theme" uid="uid://c5a1nyqumj46j" path="res://menu/menu_theme.tres" id="4_d7ru6"] [ext_resource type="Shader" path="res://player/crosshair.gdshader" id="4_dut1p"] [ext_resource type="Script" path="res://player/SplashController.gd" id="5_wnbq8"] [ext_resource type="AudioStream" uid="uid://xretxahxbqdr" path="res://assets/splash.ogg" id="6_xi537"] @@ -137,7 +138,6 @@ grow_horizontal = 2 grow_vertical = 2 [node name="CameraViewportContainer" type="SubViewportContainer" parent="Head/Viewport"] -layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -176,7 +176,6 @@ theme = SubResource("Theme_smyke") [node name="FPS_Label" type="Label" parent="HUD"] visible = false -layout_mode = 1 anchors_preset = 1 anchor_left = 1.0 anchor_right = 1.0 @@ -189,7 +188,7 @@ horizontal_alignment = 2 script = SubResource("GDScript_iiadi") [node name="PointsSpawner" type="Control" parent="HUD"] -layout_mode = 1 +layout_mode = 3 anchors_preset = 8 anchor_left = 0.5 anchor_top = 0.5 @@ -199,20 +198,19 @@ grow_horizontal = 2 grow_vertical = 2 script = SubResource("GDScript_5d122") -[node name="Speed_Label" type="Label" parent="HUD"] -visible = false -layout_mode = 1 -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -offset_left = -53.0 -offset_top = 36.0 -offset_right = 53.0 -offset_bottom = 71.0 -grow_horizontal = 2 -grow_vertical = 2 +[node name="AmmoLabel" type="Label" parent="HUD"] +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -106.0 +offset_top = -35.0 +grow_horizontal = 0 +grow_vertical = 0 +theme = ExtResource("4_d7ru6") +theme_override_font_sizes/font_size = 16 +text = "asdfasdf" horizontal_alignment = 1 vertical_alignment = 1 @@ -220,11 +218,11 @@ vertical_alignment = 1 position = Vector2(727, 447) scale = Vector2(7.61, 4.89) copy_mode = 2 +metadata/_edit_lock_ = true [node name="SubViewportContainer" type="SubViewportContainer" parent="HUD"] visible = false show_behind_parent = true -layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -247,18 +245,19 @@ MainCamera = NodePath("../../../../Head/Viewport/CameraViewportContainer/GameVie [node name="Crosshair" type="ColorRect" parent="HUD"] material = SubResource("ShaderMaterial_2p6rt") -layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +metadata/_edit_lock_ = true [node name="BackBufferCopy" type="BackBufferCopy" parent="HUD"] visible = false y_sort_enabled = true position = Vector2(140, 79) scale = Vector2(1.65, 1) +metadata/_edit_lock_ = true [node name="RigidDynamicBody3D" type="RigidBody3D" parent="."] diff --git a/player/BaseWeapon.gd b/player/onhand/BaseWeapon.gd similarity index 89% rename from player/BaseWeapon.gd rename to player/onhand/BaseWeapon.gd index 0fe5a39..79c3443 100644 --- a/player/BaseWeapon.gd +++ b/player/onhand/BaseWeapon.gd @@ -7,10 +7,16 @@ enum WeaponSlot { THREE } +enum AmmoType { + NONE, + SINGLE +} + @export_range(0,1) var MOUSE_MOVEMENT_BOB_AMOUNT := 0.5 var player: Player var weaponSlot: WeaponSlot = WeaponSlot.ONE +var ammoType: AmmoType = AmmoType.NONE var mouse_movement := Vector2.ZERO func on_switch_in(): diff --git a/player/onhand/PeaShooter.gd b/player/onhand/PeaShooter.gd new file mode 100644 index 0000000..388f481 --- /dev/null +++ b/player/onhand/PeaShooter.gd @@ -0,0 +1,46 @@ +extends BaseWeapon +class_name PeaShooter + +const FIRE_RATE := 0.15 +var last_fired := 0 +var remaining := 10 + +@onready var ray = $RayCast3D + + +func _init() -> void: + self.weaponSlot = WeaponSlot.ONE + self.ammoType = AmmoType.SINGLE + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + var current_time = Time.get_ticks_msec() + + if Input.is_action_just_pressed("fire") and current_time > (last_fired + FIRE_RATE*1000): + if remaining > 0: + shoot() + + +func shoot() -> void: + last_fired = Time.get_ticks_msec() +# audio_player.play() +# $AnimationPlayer.seek(0) +# $AnimationPlayer.play("shoot") + + if ray.is_colliding(): + var normal = ray.get_collision_normal() as Vector3 + var point = ray.get_collision_point() as Vector3 + var object = ray.get_collider() as Node3D +# decalInstance.position = point +# object.add_child(decalInstance) + else: + # We should show a particle fx where the seed bouced off + pass + + remaining -= 1 diff --git a/player/onhand/PeaShooter.tscn b/player/onhand/PeaShooter.tscn new file mode 100644 index 0000000..dffda64 --- /dev/null +++ b/player/onhand/PeaShooter.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=2 format=3 uid="uid://cu53ekfgwammu"] + +[ext_resource type="Script" path="res://player/onhand/PeaShooter.gd" id="1_bl35a"] + +[node name="PeaShooter" type="Node3D"] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 0, 0) +script = ExtResource("1_bl35a") + +[node name="RayCast3D" type="RayCast3D" parent="."] +target_position = Vector3(1000, 0, 0) diff --git a/project.godot b/project.godot index e5d43dc..7354ccc 100644 --- a/project.godot +++ b/project.godot @@ -12,7 +12,12 @@ _global_script_classes=[{ "base": "Node", "class": &"BaseWeapon", "language": &"GDScript", -"path": "res://player/BaseWeapon.gd" +"path": "res://player/onhand/BaseWeapon.gd" +}, { +"base": "BaseWeapon", +"class": &"PeaShooter", +"language": &"GDScript", +"path": "res://player/onhand/PeaShooter.gd" }, { "base": "CharacterBody3D", "class": &"Player", @@ -26,6 +31,7 @@ _global_script_classes=[{ }] _global_script_class_icons={ "BaseWeapon": "", +"PeaShooter": "", "Player": "", "PlayerInputData": "" } @@ -96,6 +102,11 @@ toggle_torch={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"unicode":0,"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,"pressed":false,"double_click":false,"script":null) +] +} [rendering]