rocket launcher moves objects, blast radius not falling off properly yet
This commit is contained in:
@@ -1,10 +1,17 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://hptaoyu5jeqk"]
|
||||
[gd_scene load_steps=12 format=3 uid="uid://hptaoyu5jeqk"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://v6217lr32l0m" path="res://assets/Models/rocket1.png" id="1_f6yyc"]
|
||||
[ext_resource type="Script" path="res://scripts/rocket.gd" id="1_s0phn"]
|
||||
[ext_resource type="Texture2D" uid="uid://cfanvwkgixns0" path="res://assets/Models/rocket.rough.png" id="2_g6kha"]
|
||||
[ext_resource type="PackedScene" uid="uid://6p7d7txcox7i" path="res://assets/rocket_explosion.tscn" id="2_mbh48"]
|
||||
|
||||
[sub_resource type="Curve" id="Curve_lnjp5"]
|
||||
_data = [Vector2(0, 0), 0.0, 1.4, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
|
||||
point_count = 2
|
||||
|
||||
[sub_resource type="CurveTexture" id="CurveTexture_0mibw"]
|
||||
curve = SubResource("Curve_lnjp5")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2051l"]
|
||||
resource_name = "rocketlauncher1.rocket"
|
||||
cull_mode = 2
|
||||
@@ -54,7 +61,10 @@ shadow_mesh = SubResource("ArrayMesh_xh68t")
|
||||
radius = 0.154605
|
||||
height = 1.21279
|
||||
|
||||
[node name="Rocket" type="RigidBody3D"]
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_vdo7n"]
|
||||
radius = 10.0
|
||||
|
||||
[node name="Rocket" type="RigidBody3D" node_paths=PackedStringArray("blast_radius")]
|
||||
collision_layer = 6
|
||||
collision_mask = 7
|
||||
continuous_cd = true
|
||||
@@ -62,14 +72,23 @@ max_contacts_reported = 100
|
||||
contact_monitor = true
|
||||
script = ExtResource("1_s0phn")
|
||||
explosion = ExtResource("2_mbh48")
|
||||
blast_radius = NodePath("BlastRadius")
|
||||
blast_radius_falloff = SubResource("CurveTexture_0mibw")
|
||||
|
||||
[node name="Rocket" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(-1.48467e-14, -4.37114e-08, -1, -1, 3.13916e-07, 1.12501e-15, 3.13916e-07, 1, -4.37114e-08, -0.103685, 0, -0.116837)
|
||||
transform = Transform3D(-1.48467e-14, -4.37114e-08, -1, -1, 3.13916e-07, 1.12501e-15, 3.13916e-07, 1, -4.37114e-08, 0, 0, -0.117)
|
||||
mesh = SubResource("ArrayMesh_atqsb")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1.91069e-15, 4.37114e-08, -1, 1, -4.37114e-08, 0, -4.37114e-08, -1, -4.37114e-08, -0.131657, 0, 0.116837)
|
||||
transform = Transform3D(1.91069e-15, 4.37114e-08, -1, 1, -4.37114e-08, 0, -4.37114e-08, -1, -4.37114e-08, 0, 0, 0.117)
|
||||
shape = SubResource("CapsuleShape3D_8v4gm")
|
||||
|
||||
[node name="BlastRadius" type="Area3D" parent="."]
|
||||
collision_layer = 0
|
||||
collision_mask = 7
|
||||
|
||||
[node name="radiusShape" type="CollisionShape3D" parent="BlastRadius"]
|
||||
shape = SubResource("SphereShape3D_vdo7n")
|
||||
|
||||
[connection signal="body_shape_entered" from="." to="." method="_on_body_shape_entered"]
|
||||
|
||||
@@ -218,6 +218,29 @@ _surfaces = [{
|
||||
blend_shape_mode = 0
|
||||
shadow_mesh = SubResource("ArrayMesh_6x5ra")
|
||||
|
||||
[sub_resource type="Animation" id="Animation_0783b"]
|
||||
resource_name = "empty"
|
||||
|
||||
[sub_resource type="Animation" id="Animation_maeha"]
|
||||
resource_name = "inspect"
|
||||
|
||||
[sub_resource type="Animation" id="Animation_yxlbo"]
|
||||
resource_name = "reload"
|
||||
tracks/0/type = "method"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(1),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"values": [{
|
||||
"args": [],
|
||||
"method": &"reload_finished"
|
||||
}]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_qw7o5"]
|
||||
resource_name = "shoot"
|
||||
length = 0.1
|
||||
@@ -247,29 +270,6 @@ tracks/1/keys = {
|
||||
"values": [Vector3(0, -1.5708, -1.5708), Vector3(0, -1.5708, -1.5708)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_yxlbo"]
|
||||
resource_name = "reload"
|
||||
tracks/0/type = "method"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(1),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"values": [{
|
||||
"args": [],
|
||||
"method": &"reload_finished"
|
||||
}]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_0783b"]
|
||||
resource_name = "empty"
|
||||
|
||||
[sub_resource type="Animation" id="Animation_maeha"]
|
||||
resource_name = "inspect"
|
||||
|
||||
[sub_resource type="Animation" id="Animation_rqg2e"]
|
||||
resource_name = "swap_in"
|
||||
tracks/0/type = "value"
|
||||
@@ -375,7 +375,7 @@ mesh = SubResource("ArrayMesh_5qx80")
|
||||
skeleton = NodePath("")
|
||||
|
||||
[node name="BarrelRaycast" type="RayCast3D" parent="rocketlauncher1"]
|
||||
transform = Transform3D(1.91069e-15, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, 3.53024e-22, -4.37114e-08, -0.0398292, -1.19895, -0.158627)
|
||||
transform = Transform3D(1.91069e-15, -1, -4.37114e-08, -4.37114e-08, -4.37114e-08, 1, -1, 3.53024e-22, -4.37114e-08, 0, -1.199, 0)
|
||||
target_position = Vector3(0, 0, -1)
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
|
||||
@@ -1167,6 +1167,7 @@ gun_2 = ExtResource("2_ayfr5")
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("4_4bx26")]
|
||||
transform = Transform3D(-0.866025, 0, -0.5, 0, 1, 0, 0.5, 0, -0.866025, -16.0295, 1.4435, 12.1166)
|
||||
AUDIO = false
|
||||
weapon_sway_amount = 0.07
|
||||
weapon_rotation_amount = 0.07
|
||||
|
||||
|
||||
@@ -33,8 +33,10 @@ var start_sensitivity
|
||||
@export var BASE_FOV : float = 80
|
||||
@export var FOV_CHANGE = 1.5
|
||||
|
||||
@export_group("Gun")
|
||||
@export var gun : Node
|
||||
#@export_group("Gun") DELETE IF DOESNT CAUSE ISSUES
|
||||
#@export
|
||||
|
||||
var gun : Node
|
||||
|
||||
@onready var gun_ray = $Head/Camera3D/GunRay
|
||||
@onready var level_control = $".."
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
extends RigidBody3D
|
||||
|
||||
@export var explosion : Resource
|
||||
@export var blast_radius : Node
|
||||
@export var blast_radius_falloff : Resource
|
||||
@onready var radius_shape = $BlastRadius/radiusShape
|
||||
|
||||
var blast_power
|
||||
var bullet_speed
|
||||
var player_velocity
|
||||
var bullet_damage
|
||||
@@ -18,8 +22,30 @@ func _process(delta):
|
||||
|
||||
|
||||
func _on_body_shape_entered(body_rid, body, body_shape_index, local_shape_index):
|
||||
#move objects
|
||||
explode()
|
||||
|
||||
#Spawn gpu particles
|
||||
var explosionspawn = explosion.instantiate()
|
||||
explosionspawn.position = self.global_position
|
||||
explosionspawn.transform.basis = self.global_transform.basis
|
||||
get_tree().get_root().add_child(explosionspawn)
|
||||
queue_free()
|
||||
|
||||
func explode():
|
||||
#get all collision objects that can be moved
|
||||
var moveable_rigidbodies = blast_radius.get_overlapping_bodies()
|
||||
#for each object determine vector from center of blast radius
|
||||
#apply linear velocity power as the inverse % of distance towards the edge (bonus points if using curve texture)
|
||||
#break breakable objects
|
||||
for body in moveable_rigidbodies:
|
||||
if body.is_in_group("scene_rigidbody"):
|
||||
var blast_direction = (body.global_position - blast_radius.global_position).normalized()
|
||||
var blast_amount = (10 / (body.global_position - blast_radius.global_position).length()) / 10
|
||||
print("blast direction "+str(blast_direction))
|
||||
print("blast amount "+str(blast_amount))
|
||||
var blast_velocity = blast_direction * blast_power * blast_amount
|
||||
if body.is_in_group("breakable"):
|
||||
body.breaking(blast_velocity)
|
||||
else:
|
||||
body.linear_velocity += blast_velocity
|
||||
|
||||
@@ -14,7 +14,7 @@ var cycle_count
|
||||
@export var max_ammo = 15
|
||||
@export var start_mags = 3
|
||||
@export var bullet_damage = 1
|
||||
@export var bullet_force_mod = 5.0
|
||||
@export var blast_power = 50.0
|
||||
@export var bullet_speed : float = 150
|
||||
@export var bullet_drop = .3
|
||||
@export var random_spread_amt = 1.0
|
||||
@@ -97,6 +97,7 @@ func shoot(delta):
|
||||
instance_bullet.bullet_speed = bullet_speed
|
||||
instance_bullet.player_velocity = player.velocity
|
||||
instance_bullet.bullet_damage = bullet_damage
|
||||
instance_bullet.blast_power = blast_power
|
||||
instance_bullet.player_position = player.global_position
|
||||
get_tree().get_root().add_child(instance_bullet)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user