55 lines
1.4 KiB
GDScript
55 lines
1.4 KiB
GDScript
extends RigidBody2D
|
|
|
|
signal clicked
|
|
|
|
var held = false
|
|
|
|
@onready var Blood = preload("res://blood.tscn")
|
|
var contact_point = Vector2.ZERO
|
|
|
|
func _on_input_event(viewport, event, shape_idx):
|
|
if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT:
|
|
if event.pressed:
|
|
print("clicked")
|
|
clicked.emit(self)
|
|
|
|
func _physics_process(delta):
|
|
if held:
|
|
var mouse_position = clamp(get_global_mouse_position(),Vector2.ZERO,Vector2(640,480))
|
|
global_transform.origin = mouse_position
|
|
|
|
func pickup():
|
|
if held:
|
|
return
|
|
freeze = true
|
|
held = true
|
|
|
|
func drop(impulse=Vector2.ZERO):
|
|
if held:
|
|
freeze = false
|
|
apply_central_impulse(impulse)
|
|
held = false
|
|
|
|
|
|
func _integrate_forces(state):
|
|
contact_point = state.get_contact_collider_position(0)
|
|
|
|
func _on_body_entered(body: Node) -> void:
|
|
if abs(linear_velocity.x) > 200 or abs(linear_velocity.y) > 200:
|
|
%AudioStreamPlayer.play()
|
|
%Impact_noise.play()
|
|
%Timer.start()
|
|
var blood = Blood.instantiate()
|
|
var random_position = Vector2(randf_range(-70,70),randf_range(-50,50))
|
|
blood.global_position = contact_point + random_position
|
|
get_parent().add_child(blood)
|
|
battle_damage()
|
|
|
|
func battle_damage():
|
|
print(%Bruising.modulate.a)
|
|
if %Bruising.modulate.a < 1:
|
|
%Bruising.modulate.a += randf_range(0,0.1)
|
|
if %Bruising.modulate.a > 0.5:
|
|
%Bleeding.modulate.a += randf_range(0,0.05)
|
|
if %Bleeding.modulate.a > 0.9:
|
|
%HeavyBleeding.modulate.a += randf_range(0,0.025)
|