Set up a revised player scene with a component based apparoach; shooting
functionality incomplete.
This commit is contained in:
parent
8d89271074
commit
9b3841775c
13 changed files with 331 additions and 0 deletions
46
scripts/movement_component.gd
Normal file
46
scripts/movement_component.gd
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
class_name MovementComponent extends Node
|
||||
|
||||
@export var player: Area2D
|
||||
@export var speed: float = 275
|
||||
@export var bounds_x: int = 12
|
||||
@export var bounds_y: int = 12
|
||||
|
||||
@onready var weapon_component: WeaponComponent = %WeaponComponent
|
||||
|
||||
|
||||
@onready var screensize = get_viewport().content_scale_size
|
||||
|
||||
var input = Input.get_vector("left", "right", "up","down")
|
||||
|
||||
func tick(delta: float):
|
||||
# Check to see if there's a player to move
|
||||
if player == null: return
|
||||
|
||||
# Calculate ship to bullet displacemnt
|
||||
player.ship_displacement = player.position.y - player.previous_position.y
|
||||
player.travel += abs(weapon_component.bullet_data.speed) * delta + (player.ship_displacement)
|
||||
player.travel = clamp(player.travel, 0, 1.9 * weapon_component.bullet_data.projectile_spacing)
|
||||
|
||||
# Thruster animation in relation to player movement
|
||||
if input.x > 0:
|
||||
player.position.x = player.position.x+1
|
||||
%Ship.frame = 2
|
||||
%Ship/Thrusters.flip_h = true
|
||||
%Ship/Thrusters.animation = "banked"
|
||||
elif input.x < 0:
|
||||
player.position.x = player.position.x-1
|
||||
%Ship.frame = 1
|
||||
%Ship/Thrusters.flip_h = false
|
||||
%Ship/Thrusters.animation = "banked"
|
||||
else:
|
||||
%Ship.frame = 0
|
||||
player.position.x = player.position.x
|
||||
%Ship/Thrusters.flip_h = false
|
||||
%Ship/Thrusters.animation = "fwd"
|
||||
|
||||
# Get previous positon for equidistant bullet calculation
|
||||
player.previous_position = player.position
|
||||
|
||||
# Move player within screenbounds
|
||||
player.position += input * speed * delta
|
||||
player.position = player.position.clamp(Vector2i(bounds_x,bounds_y), screensize - Vector2i(bounds_x,bounds_y))
|
||||
Loading…
Add table
Add a link
Reference in a new issue