gd: added input addon
This commit is contained in:
46
guide_examples/top_down_shooter/player/player.gd
Normal file
46
guide_examples/top_down_shooter/player/player.gd
Normal file
@ -0,0 +1,46 @@
|
||||
extends CharacterBody2D
|
||||
|
||||
|
||||
@export var speed:float = 300
|
||||
@export var look_relative:GUIDEAction
|
||||
@export var look_absolute:GUIDEAction
|
||||
@export var move:GUIDEAction
|
||||
@export var fire:GUIDEAction
|
||||
|
||||
@export var bolt:PackedScene
|
||||
|
||||
@onready var left_hand:Node2D = %LeftHand
|
||||
@onready var right_hand:Node2D = %RightHand
|
||||
|
||||
|
||||
func _ready():
|
||||
# fire some bolts when the fire action triggers
|
||||
fire.triggered.connect(_fire)
|
||||
|
||||
func _physics_process(delta):
|
||||
var target = Vector2.INF
|
||||
|
||||
# Looking at absolute coordinates. This is the case when we use a mouse.
|
||||
if look_absolute.is_triggered():
|
||||
target = look_absolute.value_axis_2d
|
||||
# Looking at relative coordinates. This is the case when we use a controller
|
||||
elif look_relative.is_triggered():
|
||||
target = global_position + look_relative.value_axis_2d
|
||||
|
||||
# If we have a target, rotate towards it
|
||||
if target.is_finite():
|
||||
var target_orientation = Transform2D()\
|
||||
.translated(transform.origin)\
|
||||
.looking_at(target)
|
||||
transform = transform.interpolate_with(target_orientation, 5 * delta)
|
||||
|
||||
# and move according to the input.
|
||||
velocity = speed * move.value_axis_2d
|
||||
move_and_slide()
|
||||
|
||||
func _fire():
|
||||
# for each hand of the player, spawn a bolt
|
||||
for hand in [left_hand, right_hand]:
|
||||
var a_bolt:Node2D = bolt.instantiate()
|
||||
get_parent().add_child(a_bolt)
|
||||
a_bolt.global_transform = hand.global_transform
|
Reference in New Issue
Block a user