it does a weird thing when you go from one side to the other, probably because of how godot handles the angles. It's def fixable but I'll have to play around with it more Reviewed-on: #8 Reviewed-by: ysandler <accounts@tzed.io> Co-authored-by: Travis Gatlin <travisgatlin53@yahoo.com> Co-committed-by: Travis Gatlin <travisgatlin53@yahoo.com>
29 lines
921 B
GDScript
29 lines
921 B
GDScript
extends CharacterBody2D
|
|
@onready var global = $"/root/Player"
|
|
|
|
const SPEED = 350.0
|
|
|
|
func _physics_process(delta: float) -> void:
|
|
global.emit_signal("playerPosition",self.global_position)
|
|
movement()
|
|
|
|
func animation():
|
|
pass
|
|
|
|
func movement():
|
|
var vertical = Input.get_axis("up","down")
|
|
var horizontal = Input.get_axis("left","right")
|
|
var rotVector = Vector2(vertical*-1,horizontal).normalized()
|
|
#self.rotation = rotVector.angle()
|
|
if rotVector != Vector2(0,0):
|
|
var rotationTween = get_tree().create_tween()
|
|
rotationTween.tween_property(self,"global_rotation",rotVector.angle(),0.1)
|
|
if is_equal_approx(abs(vertical),1.0) and is_equal_approx(abs(horizontal),1.0):
|
|
velocity.y = SPEED*vertical/2
|
|
velocity.x = SPEED*horizontal/2
|
|
else:
|
|
velocity.y = SPEED * vertical
|
|
velocity.x = SPEED * horizontal
|
|
move_and_slide()
|
|
$"../Camera2D/Label".text = (str(vertical)+" "+str(horizontal) + "vector:"+str(rotVector))
|