diff options
author | Malfurious <m@lfurio.us> | 2023-04-24 07:50:00 -0400 |
---|---|---|
committer | Malfurious <m@lfurio.us> | 2023-04-24 07:50:00 -0400 |
commit | 97dd79339284b033774ac74a04dd4a255475261a (patch) | |
tree | 951d3c29e676c14c9f165b32143e9aaae8ec4f6a /godot3-prototype/assets/weapons | |
parent | 53091fce91ce03aae208bd0c61ee28830b34387d (diff) | |
download | project-s-master.tar.gz project-s-master.zip |
Signed-off-by: Malfurious <m@lfurio.us>
Diffstat (limited to 'godot3-prototype/assets/weapons')
6 files changed, 125 insertions, 0 deletions
diff --git a/godot3-prototype/assets/weapons/goo_gun/Bullet.gd b/godot3-prototype/assets/weapons/goo_gun/Bullet.gd new file mode 100644 index 0000000..5c5097f --- /dev/null +++ b/godot3-prototype/assets/weapons/goo_gun/Bullet.gd @@ -0,0 +1,10 @@ +extends RigidBody + +export var material : Material = null + +func _ready(): + if material != null: + $MeshInstance.set("material/0", material) + +func _on_Bullet_body_entered(_body): + queue_free() diff --git a/godot3-prototype/assets/weapons/goo_gun/Bullet.tscn b/godot3-prototype/assets/weapons/goo_gun/Bullet.tscn new file mode 100644 index 0000000..69ba3b6 --- /dev/null +++ b/godot3-prototype/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/godot3-prototype/assets/weapons/goo_gun/GooGun.gd b/godot3-prototype/assets/weapons/goo_gun/GooGun.gd new file mode 100644 index 0000000..8ee6e0f --- /dev/null +++ b/godot3-prototype/assets/weapons/goo_gun/GooGun.gd @@ -0,0 +1,31 @@ +extends Spatial + +export var is_firing = false +export var fire_rate = 0.075 +export var projectile_material : Material = null +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() + bullet.material = projectile_material + $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/godot3-prototype/assets/weapons/goo_gun/GooGun.tscn b/godot3-prototype/assets/weapons/goo_gun/GooGun.tscn new file mode 100644 index 0000000..4bd8c65 --- /dev/null +++ b/godot3-prototype/assets/weapons/goo_gun/GooGun.tscn @@ -0,0 +1,50 @@ +[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 ) +size = Vector3( 0.25, 0.25, 2 ) + +[sub_resource type="CapsuleMesh" id=2] +material = ExtResource( 2 ) +radius = 0.275 +mid_height = 0.618 + +[sub_resource type="CubeMesh" id=3] +material = ExtResource( 1 ) +size = Vector3( 0.15, 0.5, 0.15 ) + +[sub_resource type="CylinderMesh" id=4] +material = ExtResource( 1 ) +top_radius = 0.24 +bottom_radius = 0.088 +height = 0.429 + +[node name="GooGun" type="Spatial"] +script = ExtResource( 3 ) + +[node name="Body" type="MeshInstance" parent="."] +use_in_baked_light = true +mesh = SubResource( 1 ) +material/0 = null + +[node name="Tank" type="MeshInstance" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.398, -0.375 ) +use_in_baked_light = true +mesh = SubResource( 2 ) +material/0 = null + +[node name="Handle" type="MeshInstance" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.373, -0.27 ) +use_in_baked_light = true +mesh = SubResource( 3 ) +material/0 = null + +[node name="Nozzle" type="MeshInstance" parent="."] +transform = Transform( 1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0.953 ) +use_in_baked_light = true +mesh = SubResource( 4 ) +material/0 = null diff --git a/godot3-prototype/assets/weapons/goo_gun/gun_material.tres b/godot3-prototype/assets/weapons/goo_gun/gun_material.tres new file mode 100644 index 0000000..08bf630 --- /dev/null +++ b/godot3-prototype/assets/weapons/goo_gun/gun_material.tres @@ -0,0 +1,4 @@ +[gd_resource type="SpatialMaterial" format=2] + +[resource] +albedo_color = Color( 0.317647, 1, 0.14902, 1 ) diff --git a/godot3-prototype/assets/weapons/goo_gun/tank_material.tres b/godot3-prototype/assets/weapons/goo_gun/tank_material.tres new file mode 100644 index 0000000..c8b98a4 --- /dev/null +++ b/godot3-prototype/assets/weapons/goo_gun/tank_material.tres @@ -0,0 +1,4 @@ +[gd_resource type="SpatialMaterial" format=2] + +[resource] +albedo_color = Color( 1, 0.423529, 0.0509804, 1 ) |