summaryrefslogtreecommitdiffstats
path: root/assets/weapons/goo_gun
diff options
context:
space:
mode:
authorMalfurious <m@lfurio.us>2022-07-22 05:26:34 -0400
committerMalfurious <m@lfurio.us>2022-07-22 05:26:34 -0400
commit44e739bb05542d1249ccf8388bd15b3f0b052e0c (patch)
tree42a67300e8e2ebcbd9868e6af1f7e992b285c3c6 /assets/weapons/goo_gun
parent4a9ff23bb13bfe5c182222fdb4314afc4f5c1fa8 (diff)
parentea3ecd73dab3e0e06bb145b38e8258b9dd02abcb (diff)
downloadproject-s-44e739bb05542d1249ccf8388bd15b3f0b052e0c.tar.gz
project-s-44e739bb05542d1249ccf8388bd15b3f0b052e0c.zip
Merge branch 'weapon-behavior'
Implements the basics for the Goo Gun primary fire * weapon-behavior: Despawn bullets on collision with another physics body Tweak Goo Gun bullet physics to better mimic reference weapon Implement Goo Gun primary fire Add bullet / ink pellet object for Goo Gun
Diffstat (limited to 'assets/weapons/goo_gun')
-rw-r--r--assets/weapons/goo_gun/Bullet.gd4
-rw-r--r--assets/weapons/goo_gun/Bullet.tscn26
-rw-r--r--assets/weapons/goo_gun/GooGun.gd29
-rw-r--r--assets/weapons/goo_gun/GooGun.tscn4
4 files changed, 62 insertions, 1 deletions
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
new file mode 100644
index 0000000..69ba3b6
--- /dev/null
+++ b/assets/weapons/goo_gun/Bullet.tscn
@@ -0,0 +1,26 @@
+[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 )
+
+[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 )
+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 )
+material/0 = null
+
+[node name="CollisionShape" type="CollisionShape" parent="."]
+shape = SubResource( 2 )
+
+[connection signal="body_entered" from="." to="." method="_on_Bullet_body_entered"]
diff --git a/assets/weapons/goo_gun/GooGun.gd b/assets/weapons/goo_gun/GooGun.gd
new file mode 100644
index 0000000..6a6758d
--- /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.075
+export var projectile_spread = 0 #TODO
+export var projectile_scalar = 40
+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 )