62 lines
1.3 KiB
GDScript
62 lines
1.3 KiB
GDScript
extends CharacterBody2D
|
|
|
|
var frisbee = preload("res://frisbee.tscn")
|
|
|
|
var heldFrisbee :CharacterBody2D= null
|
|
|
|
var remote_player :bool= false
|
|
|
|
var max_walk :float= 10
|
|
var accel_walk :float= 100
|
|
|
|
var max_run :float= 20
|
|
var accel_run :float= 2 * accel_walk
|
|
|
|
var friction_tonic :float= 1e-1
|
|
|
|
var move_dir :Vector2= Vector2.ZERO
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready():
|
|
$PlayerSprite.play("still")
|
|
|
|
func set_move_direction(dir):
|
|
move_dir = dir
|
|
|
|
func move_player(delta):
|
|
position.x += move_dir.x * max_walk
|
|
position.y += move_dir.y * max_walk
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
func _process(delta):
|
|
move_player(delta)
|
|
|
|
func _input(event):
|
|
if remote_player:
|
|
pass
|
|
|
|
var direction = Input.get_vector(
|
|
"player_left",
|
|
"player_right",
|
|
"player_up",
|
|
"player_down"
|
|
)
|
|
set_move_direction(direction)
|
|
|
|
var flick = Input.get_vector(
|
|
"flick_left",
|
|
"flick_right",
|
|
"flick_up",
|
|
"flick_down"
|
|
)
|
|
|
|
if flick.length_squared() != 0:
|
|
if heldFrisbee == null:
|
|
heldFrisbee = frisbee.instantiate()
|
|
$PlayerSprite/FrisbeeLocation.add_child(heldFrisbee)
|
|
$PlayerSprite.play("throw")
|
|
else:
|
|
$PlayerSprite.play("still")
|
|
$PlayerSprite/FrisbeeLocation.remove_child(heldFrisbee)
|
|
heldFrisbee = null
|