Notes for everyone
on the player object, add raycast to camera
enable it
set cast to to -100 on Z axis (y=0)
create a new node, call it weapon
map a new input map “primary_fire” mouse button
add a script to weapon (default empty)
set up some variables for the weapon, track ammo code
export var fire_rate = 0.5
export var clip_size = 5
export var reload_rate = 1
var current_ammo = clip_size
var can_fire = true
func _process(delta):
if Input.is_action_just_pressed("primary_fire") and can_fire:
print "Fired weapon"
func _process(delta):
if Input.is_action_just_pressed("primary_fire") and can_fire:
print "Fired weapon"
can_fire = false
yield(get_tree().create_timer(fire_rate), "timeout")
can_fire = true
func _process(delta):
if Input.is_action_just_pressed("primary_fire") and can_fire:
if current_ammo > 0:
print "Fired weapon"
can_fire = false
current_ammo -= 1
yield(get_tree().create_timer(fire_rate), "timeout")
can_fire = true
else:
print "Reloading"
yield(get_tree().create_timer(reload_rate), "timeout")
current_ammo = clip_size
print "Reload complete"
export var fire_rate = 0.5
export var clip_size = 5
export var reload_rate = 1
var current_ammo = clip_size
var can_fire = true
var reloading = false
func _process(delta):
if Input.is_action_just_pressed("primary_fire") and can_fire:
if current_ammo > 0 and not reloading:
print "Fired weapon"
can_fire = false
current_ammo -= 1
yield(get_tree().create_timer(fire_rate), "timeout")
can_fire = true
elif not reloading:
print "Reloading"
reloading = true
yield(get_tree().create_timer(reload_rate), "timeout")
current_ammo = clip_size
reloading = false
print "Reload complete"
Add a child node to the world, a static body, add a meshinstance to it as a child, called it enemy, make it a sphere
Add a child node to the staticbody, a collision shape sphere
Assign it to a group, (properties, node, “enemies”)
add new function:
onready var raycast = $"../Head/Camera/RayCast"
func check_collision():
if raycast.is_colliding():
var collider = raycast.get_collider()
if collider.is_in_group("enemies"):
collider.queue_free()
print("Killed "+collider.name)