2020-06-19 23:15:01 +02:00
|
|
|
extends Spatial
|
|
|
|
|
2020-09-19 20:26:51 +02:00
|
|
|
export(bool) var Hitscan = false
|
|
|
|
export(int) var Damage = 100
|
|
|
|
|
|
|
|
onready var camera = get_parent().get_parent()
|
|
|
|
|
2020-09-25 00:23:09 +02:00
|
|
|
onready var player = get_parent().get_parent().get_parent()
|
|
|
|
|
|
|
|
onready var ejector = find_node("Ejector")
|
|
|
|
|
|
|
|
onready var sound_shoot = $SoundShoot
|
|
|
|
|
2020-09-14 23:52:16 +02:00
|
|
|
var casing = preload("res://Assets/Weapons/Handgun/Casing.tscn")
|
2020-09-18 01:09:54 +02:00
|
|
|
var tracer = preload("res://Assets/Effects/BulletTracer.tscn")
|
2020-06-19 23:15:01 +02:00
|
|
|
|
|
|
|
# Declare member variables here. Examples:
|
|
|
|
# var a = 2
|
|
|
|
# var b = "text"
|
|
|
|
|
|
|
|
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
|
|
func _ready():
|
2020-09-25 00:23:09 +02:00
|
|
|
sound_shoot.global_transform = camera.get_global_transform()
|
2020-06-19 23:15:01 +02:00
|
|
|
|
|
|
|
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
|
|
#func _process(delta):
|
|
|
|
# pass
|
2020-09-14 22:59:57 +02:00
|
|
|
|
2020-09-17 23:09:28 +02:00
|
|
|
remote func shoot():
|
2020-09-19 20:26:51 +02:00
|
|
|
|
|
|
|
#print ("Camera location: ", camera.global_transform.origin)
|
2020-09-25 00:23:09 +02:00
|
|
|
|
2020-09-18 01:09:54 +02:00
|
|
|
var tracer_instance = tracer.instance()
|
2020-09-25 00:23:09 +02:00
|
|
|
tracer_instance.hide()
|
2020-09-18 01:09:54 +02:00
|
|
|
tracer_instance.global_transform = find_node("Muzzle").global_transform
|
|
|
|
|
|
|
|
get_tree().root.call_deferred("add_child", tracer_instance)
|
2020-09-25 00:23:09 +02:00
|
|
|
tracer_instance.call_deferred("show")
|
|
|
|
|
|
|
|
$Handgun/AnimationPlayer.stop()
|
|
|
|
$Handgun/AnimationPlayer.play("Shoot", -1, 2)
|
2020-09-18 01:09:54 +02:00
|
|
|
|
2020-09-25 00:23:09 +02:00
|
|
|
$SoundShoot.play()
|
2020-09-18 01:09:54 +02:00
|
|
|
|
2020-09-25 00:23:09 +02:00
|
|
|
$MuzzleFlash.emitting = true
|
2020-09-18 01:09:54 +02:00
|
|
|
|
2020-09-25 00:23:09 +02:00
|
|
|
yield(get_tree().create_timer(0.05),"timeout")
|
2020-09-14 23:52:16 +02:00
|
|
|
|
2020-09-25 00:23:09 +02:00
|
|
|
var casing_instance = casing.instance()
|
|
|
|
casing_instance.global_transform = ejector.global_transform
|
2020-09-18 01:09:54 +02:00
|
|
|
|
2020-09-25 00:23:09 +02:00
|
|
|
casing_instance.rotate_object_local(Vector3.FORWARD, deg2rad(90))
|
|
|
|
|
|
|
|
casing_instance.angular_velocity = - ejector.global_transform.basis[2] * rand_range(23, 37)
|
|
|
|
casing_instance.linear_velocity = ejector.global_transform.basis[0] * rand_range(3.2, 4.5) - ejector.global_transform.basis[2] * rand_range(2.6, 3.7)
|
2020-09-14 23:52:16 +02:00
|
|
|
|
|
|
|
|
2020-09-25 00:23:09 +02:00
|
|
|
get_tree().root.call_deferred("add_child", casing_instance)
|
2020-09-18 00:05:41 +02:00
|
|
|
|
2020-09-25 00:23:09 +02:00
|
|
|
yield(get_tree().create_timer(0.05),"timeout")
|
|
|
|
|
|
|
|
$MuzzleFlash.emitting = false
|
|
|
|
|
|
|
|
|