User Tools

Site Tools


events:getting_started_with_godot_in_3d_part_2

This is an old revision of the document!


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"
  • Test that out
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
  • Test those changes (try changing the fire rate in the properties box)
  • Simulate reloading
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"
  • Fix a reload issue (race condition):
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
    elif not reloading:
      print "Reloading"
      reloading = true
      yield(get_tree().create_timer(reload_rate), "timeout")
      current_ammo = clip_size
      reloading = false
      print "Reload complete"
events/getting_started_with_godot_in_3d_part_2.1585674769.txt.gz · Last modified: 2020/03/31 18:12 by admin