rocket launcher moves objects, blast radius not falling off properly yet
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user