From 3e8167c43cc312a814f6e899d08c18b7155d710a Mon Sep 17 00:00:00 2001 From: Malfurious Date: Fri, 22 Jul 2022 03:09:33 -0400 Subject: Add bullet / ink pellet object for Goo Gun Signed-off-by: Malfurious --- assets/weapons/goo_gun/Bullet.tscn | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 assets/weapons/goo_gun/Bullet.tscn (limited to 'assets/weapons') diff --git a/assets/weapons/goo_gun/Bullet.tscn b/assets/weapons/goo_gun/Bullet.tscn new file mode 100644 index 0000000..3971cc1 --- /dev/null +++ b/assets/weapons/goo_gun/Bullet.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://assets/characters/base_character/friendly_material.tres" type="Material" id=1] + +[sub_resource type="SphereMesh" id=1] +material = ExtResource( 1 ) + +[sub_resource type="SphereShape" id=2] + +[node name="Bullet" type="RigidBody"] +transform = Transform( 0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0 ) + +[node name="MeshInstance" type="MeshInstance" parent="."] +mesh = SubResource( 1 ) +material/0 = null + +[node name="CollisionShape" type="CollisionShape" parent="."] +shape = SubResource( 2 ) -- cgit v1.2.3 From 1f534358c264560662793ff72bfcc57d3d155b5b Mon Sep 17 00:00:00 2001 From: Malfurious Date: Fri, 22 Jul 2022 03:41:41 -0400 Subject: Implement Goo Gun primary fire Signed-off-by: Malfurious --- assets/weapons/goo_gun/GooGun.gd | 29 +++++++++++++++++++++++++++++ assets/weapons/goo_gun/GooGun.tscn | 4 +++- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 assets/weapons/goo_gun/GooGun.gd (limited to 'assets/weapons') diff --git a/assets/weapons/goo_gun/GooGun.gd b/assets/weapons/goo_gun/GooGun.gd new file mode 100644 index 0000000..4839f09 --- /dev/null +++ b/assets/weapons/goo_gun/GooGun.gd @@ -0,0 +1,29 @@ +extends Spatial + +export var is_firing = false +export var fire_rate = 0.1 +export var projectile_spread = 0 #TODO +export var projectile_scalar = 25 +export var look_angle = 0 +export var weapon_pitch = 0 + +var time_since_fire = 0 + +var Bullet = preload("res://assets/weapons/goo_gun/Bullet.tscn") + +func _physics_process(delta): + if is_firing: + time_since_fire += delta + if time_since_fire >= fire_rate: + time_since_fire -= fire_rate + do_fire_projectile() + else: + time_since_fire = fire_rate + +func do_fire_projectile(): + var bullet = Bullet.instance() + $Nozzle.add_child(bullet) + bullet.set_as_toplevel(true) + var shoot_direction = Vector3.FORWARD.rotated(Vector3.LEFT, weapon_pitch) + shoot_direction = shoot_direction.rotated(Vector3.UP, look_angle) + bullet.apply_central_impulse(shoot_direction.normalized() * projectile_scalar) diff --git a/assets/weapons/goo_gun/GooGun.tscn b/assets/weapons/goo_gun/GooGun.tscn index f0b9622..edf2901 100644 --- a/assets/weapons/goo_gun/GooGun.tscn +++ b/assets/weapons/goo_gun/GooGun.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=8 format=2] [ext_resource path="res://assets/weapons/goo_gun/gun_material.tres" type="Material" id=1] [ext_resource path="res://assets/weapons/goo_gun/tank_material.tres" type="Material" id=2] +[ext_resource path="res://assets/weapons/goo_gun/GooGun.gd" type="Script" id=3] [sub_resource type="CubeMesh" id=1] material = ExtResource( 1 ) @@ -23,6 +24,7 @@ bottom_radius = 0.088 height = 0.429 [node name="GooGun" type="Spatial"] +script = ExtResource( 3 ) [node name="Body" type="MeshInstance" parent="."] mesh = SubResource( 1 ) -- cgit v1.2.3 From f1923b54231daac260950baecd0377f49b2ab641 Mon Sep 17 00:00:00 2001 From: Malfurious Date: Fri, 22 Jul 2022 05:06:22 -0400 Subject: Tweak Goo Gun bullet physics to better mimic reference weapon Signed-off-by: Malfurious --- assets/weapons/goo_gun/Bullet.tscn | 2 ++ assets/weapons/goo_gun/GooGun.gd | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'assets/weapons') diff --git a/assets/weapons/goo_gun/Bullet.tscn b/assets/weapons/goo_gun/Bullet.tscn index 3971cc1..4a1700c 100644 --- a/assets/weapons/goo_gun/Bullet.tscn +++ b/assets/weapons/goo_gun/Bullet.tscn @@ -9,6 +9,8 @@ material = ExtResource( 1 ) [node name="Bullet" type="RigidBody"] transform = Transform( 0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0 ) +gravity_scale = 5.0 +linear_damp = 2.0 [node name="MeshInstance" type="MeshInstance" parent="."] mesh = SubResource( 1 ) diff --git a/assets/weapons/goo_gun/GooGun.gd b/assets/weapons/goo_gun/GooGun.gd index 4839f09..6a6758d 100644 --- a/assets/weapons/goo_gun/GooGun.gd +++ b/assets/weapons/goo_gun/GooGun.gd @@ -1,9 +1,9 @@ extends Spatial export var is_firing = false -export var fire_rate = 0.1 +export var fire_rate = 0.075 export var projectile_spread = 0 #TODO -export var projectile_scalar = 25 +export var projectile_scalar = 40 export var look_angle = 0 export var weapon_pitch = 0 -- cgit v1.2.3 From ea3ecd73dab3e0e06bb145b38e8258b9dd02abcb Mon Sep 17 00:00:00 2001 From: Malfurious Date: Fri, 22 Jul 2022 05:12:58 -0400 Subject: Despawn bullets on collision with another physics body Signed-off-by: Malfurious --- assets/weapons/goo_gun/Bullet.gd | 4 ++++ assets/weapons/goo_gun/Bullet.tscn | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 assets/weapons/goo_gun/Bullet.gd (limited to 'assets/weapons') diff --git a/assets/weapons/goo_gun/Bullet.gd b/assets/weapons/goo_gun/Bullet.gd new file mode 100644 index 0000000..1a4c01a --- /dev/null +++ b/assets/weapons/goo_gun/Bullet.gd @@ -0,0 +1,4 @@ +extends RigidBody + +func _on_Bullet_body_entered(_body): + queue_free() diff --git a/assets/weapons/goo_gun/Bullet.tscn b/assets/weapons/goo_gun/Bullet.tscn index 4a1700c..69ba3b6 100644 --- a/assets/weapons/goo_gun/Bullet.tscn +++ b/assets/weapons/goo_gun/Bullet.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=5 format=2] [ext_resource path="res://assets/characters/base_character/friendly_material.tres" type="Material" id=1] +[ext_resource path="res://assets/weapons/goo_gun/Bullet.gd" type="Script" id=2] [sub_resource type="SphereMesh" id=1] material = ExtResource( 1 ) @@ -10,7 +11,10 @@ material = ExtResource( 1 ) [node name="Bullet" type="RigidBody"] transform = Transform( 0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0 ) gravity_scale = 5.0 +contacts_reported = 1 +contact_monitor = true linear_damp = 2.0 +script = ExtResource( 2 ) [node name="MeshInstance" type="MeshInstance" parent="."] mesh = SubResource( 1 ) @@ -18,3 +22,5 @@ material/0 = null [node name="CollisionShape" type="CollisionShape" parent="."] shape = SubResource( 2 ) + +[connection signal="body_entered" from="." to="." method="_on_Bullet_body_entered"] -- cgit v1.2.3