22 lines
686 B
GDScript
22 lines
686 B
GDScript
extends RigidBody3D
|
|
|
|
var grabbable : bool = true
|
|
@export var damage : float = 6.0
|
|
@export var min_damaging_velocity : float = 1.0
|
|
|
|
func _ready():
|
|
contact_monitor = true
|
|
max_contacts_reported = 2
|
|
set_collision_mask_value(2, true)
|
|
body_entered.connect(_on_body_entered)
|
|
|
|
func _on_body_entered(body):
|
|
if body.get("shootable") == true:
|
|
var totalvelocity = abs(angular_velocity.x + angular_velocity.y + angular_velocity.z)
|
|
if totalvelocity > (3 * min_damaging_velocity):
|
|
if body.get("rootnode") == true:
|
|
body.deal_damage(totalvelocity * damage)
|
|
else:
|
|
body.owner.deal_damage(totalvelocity * damage)
|
|
apply_central_impulse(body.position.direction_to(position) * -3.0)
|