wasd movement

This commit is contained in:
chimchooree
2023-09-08 10:27:52 -05:00
parent 25e72421c3
commit 83faf15858
6 changed files with 113 additions and 32 deletions
+66
View File
@@ -0,0 +1,66 @@
extends Node
# Player AI
var ignore_input = false
var velocity_sum = Vector2(0.0,0.0)
func set_ignore_input(new_bool):
ignore_input = new_bool
func get_ignore_input():
return ignore_input
func get_user():
return get_parent()
# Get Player Input
func get_input():
if not ignore_input:
get_movement_input()
# Get Movement Key Input
func get_movement_input():
if Input.is_action_pressed('ui_right'):
movement_key_pressed(1)
if Input.is_action_pressed('ui_left'):
movement_key_pressed(2)
if Input.is_action_pressed('ui_up'):
movement_key_pressed(3)
if Input.is_action_pressed('ui_down'):
movement_key_pressed(4)
if Input.is_action_just_released("ui_right"):
movement_key_released(1)
if Input.is_action_just_released("ui_left"):
movement_key_released(2)
if Input.is_action_just_released("ui_up"):
movement_key_released(3)
if Input.is_action_just_released("ui_down"):
movement_key_released(4)
# WASD Movement
func movement_key_pressed(direction):
get_user().set_internal_velocity(Vector2(0.0,0.0))
if direction == 1: # right
velocity_sum.x = 0
velocity_sum.x += 1
elif direction == 2: # left
velocity_sum.x = 0
velocity_sum.x -= 1
elif direction == 3: # up
velocity_sum.y = 0
velocity_sum.y -= 1
elif direction == 4: # down
velocity_sum.y = 0
velocity_sum.y += 1
# Velocity cannot be faster with more vectors
get_user().set_internal_velocity(velocity_sum)
func movement_key_released(direction):
if direction == 1 or direction == 2: # left/right
velocity_sum.x = 0
elif direction == 3 or direction == 4: # up/down
velocity_sum.y = 0
get_user().set_internal_velocity(velocity_sum)
# Physics Process
func _physics_process(delta):
## Keyboard Movement
get_input()
+10 -1
View File
@@ -1,3 +1,12 @@
extends Node
# Variables
## Nodes
func get_body_node():
return $KinematicBody2D
## Parameters
func set_gpos(new_pos):
return get_body_node().set_gpos(new_pos)
func get_gpos():
return get_body_node().get_gpos()
func set_internal_velocity(new_vel):
get_body_node().set_internal_velocity(new_vel)
+7 -8
View File
@@ -27,6 +27,8 @@ func set_external_velocity(new_velocity):
external_velocity = new_velocity
func get_external_velocity():
return external_velocity
func get_gpos():
return global_position
func set_internal_velocity(new_velocity):
internal_velocity = new_velocity
func get_internal_velocity():
@@ -60,15 +62,12 @@ func get_user():
func _process(delta):
var v = get_velocity() * get_speed() * delta * KnowledgeBase.logic_time
print(move_and_collide(v))
move_and_collide(v)
if v != Vector2(0,0):
MessageBus.publish("moved", get_user())
#func _on_input_event(viewport, event, shape_idx):
# get_physics_body_node()._on_input_event(viewport, event, shape_idx)
#func _setup():
#set_process(true)
func _setup():
set_process(true)
func _ready():
set_process(false)
#func _ready():
# set_process(false)