You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.0 KiB
86 lines
2.0 KiB
extends CharacterBody2D
|
|
|
|
|
|
const SPEED = 150.0
|
|
const SPRINT_MAX = 2
|
|
|
|
# Get the gravity from the project settings to be synced with RigidBody nodes.
|
|
#var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
|
|
|
|
var sprint = 1
|
|
var gravity = 0
|
|
var turning = false
|
|
var anim
|
|
var sprite
|
|
var direction = Vector2.ZERO
|
|
|
|
func _ready():
|
|
anim = $AnimationPlayer
|
|
sprite = $Sprite2D
|
|
|
|
|
|
func end_turn():
|
|
sprite.flip_h = !sprite.flip_h
|
|
turning = false
|
|
anim.speed_scale = 1
|
|
print( "turned" )
|
|
|
|
|
|
|
|
|
|
func turn():
|
|
#turning = true
|
|
anim.speed_scale = 1
|
|
anim.play("turn")
|
|
|
|
|
|
func _physics_process(delta):
|
|
|
|
# Add the gravity.
|
|
if gravity !=0 and not is_on_floor():
|
|
velocity.y += gravity * delta
|
|
|
|
# Handle sprint.
|
|
if Input.is_action_just_pressed("ui_accept"):
|
|
sprint = SPRINT_MAX
|
|
else:
|
|
sprint = move_toward( sprint, 1 , 0.01 )
|
|
# Get the input direction and handle the movement/deceleration.
|
|
# As good practice, you should replace UI actions with custom gameplay actions.
|
|
direction = Vector2 (Input.get_axis("ui_left", "ui_right"),Input.get_axis("ui_up", "ui_down")/2).normalized()
|
|
|
|
|
|
if (Input.is_action_just_pressed("ui_right") and sprite.flip_h) or (Input.is_action_just_pressed("ui_left") and !sprite.flip_h):
|
|
turn()
|
|
pass
|
|
|
|
|
|
if direction != Vector2.ZERO and !turning:
|
|
if ( direction.x < 0 and sprite.flip_h ) or ( direction.x > 0 and !sprite.flip_h ):
|
|
sprite.rotation = 0;
|
|
velocity.x = direction.x * SPEED * sprint
|
|
|
|
if sprint > 1:
|
|
anim.speed_scale = sprint
|
|
anim.play("sprint")
|
|
else:
|
|
anim.speed_scale = 1
|
|
anim.play("swim")
|
|
velocity.y = direction.y * SPEED
|
|
|
|
if !sprite.flip_h:
|
|
sprite.rotation = move_toward(direction.angle(),0, .1)
|
|
else:
|
|
sprite.rotation = move_toward(direction.angle() - PI,0, -.1)
|
|
|
|
else:
|
|
velocity.x = move_toward(velocity.x, 0, SPEED)
|
|
velocity.y = move_toward(velocity.y, 0, SPEED)
|
|
anim.speed_scale = .5
|
|
sprite.rotation = move_toward(sprite.rotation,0, .1)
|
|
|
|
$AnimationPlayer.play("idle")
|
|
|
|
move_and_slide()
|
|
|