Files
SailGame/resources/scenes/Player.gd

38 lines
983 B
GDScript

extends KinematicBody2D
const WIND = 20
const SPEED = 400
const STEERING = deg2rad(5)
const WINDLIMIT = deg2rad(180-45)
const WINDDIR = Vector2(0,1)
const STEERPEN = 1
const ACCELERATION = 2
var velocity = Vector2(0,10)
func _calculate_velocity(_velocity, _acceleration, _rotation):
velocity = _velocity * _acceleration
velocity = velocity.clamped(_calculate_maxspeed())
return velocity.rotated(_rotation)
func _calculate_maxspeed():
var angle_to_wind = WINDDIR.angle_to(velocity)
if angle_to_wind > WINDLIMIT || angle_to_wind < -WINDLIMIT:
return 0.1
else:
return 75
func _physics_process(_delta):
if Input.is_action_pressed("right"):
velocity = _calculate_velocity(velocity, STEERPEN, STEERING)
rotate(STEERING)
elif Input.is_action_pressed("left"):
velocity = _calculate_velocity(velocity, STEERPEN, -STEERING)
rotate(-STEERING)
else:
velocity = _calculate_velocity(velocity, ACCELERATION, 0)
velocity = move_and_slide(velocity)
func _ready():
pass