para que sirve sync to physi

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By GURFREX

estuve viendo tutorial les de YouTube de como hacer un spaceship y al copiar el código de movimiento del player no se movía como quería o hacia cosas extrañas como solo moverse en diagonal y entonces sin querer encontré esta función en el inspector y eso arreglo el problema pero ahora veo que se sale da la pantalla aquí les paso el código del player

codigo:

extends KinematicBody2D
export (PackedScene) var Shoot
const SPEED = 100
onready var motion = Vector2.ZERO
onready var can_shoot : bool = true
onready var screensize = get_viewport_rect().size
func _ready():
	$AnimatedSprite.play()
func _physics_process(delta):
	motion_ctrl()
	animation_ctrl()
	motion = move_and_collide(motion * delta)
func _input(event):
	if event.is_action_pressed("ui_accept") and can_shoot:
		shoot_ctrl()
func get_axis() -> Vector2:
	var axis = Vector2.ZERO
	axis.x = int(Input.is_action_pressed("ui_right")) - int(Input.is_action_pressed("ui_left"))
	axis.y = int(Input.is_action_pressed("ui_down")) - int(Input.is_action_pressed("ui_up"))
	return axis
func motion_ctrl():
	if get_axis() == Vector2.ZERO:
		motion = Vector2.ZERO
	else:
		motion = get_axis().normalized() * SPEED
		
		position.x = clamp(position.x, 0, screensize.x)
		position.x = clamp(position.y, 0, screensize.y)
func animation_ctrl():
	if get_axis().x == 1:
		$AnimatedSprite.animation = "horizontal"
		$AnimatedSprite.flip_h = false
	elif get_axis().x == -1:
		$AnimatedSprite.animation = "horizontal"
		$AnimatedSprite.flip_h = true
	else:
		$AnimatedSprite.animation = "vertical"
func shoot_ctrl():
	var shoot = Shoot.instance()
	shoot.global_position = $shootspawn.global_position
	get_tree().call_group("level", "add_child", shoot)

Just guessing without translating:

 position.x = clamp(position.x, 0, screensize.x)
 position.x = clamp(position.y, 0, screensize.y)   

The second one should be position.y = clamp(position.y, 0, screensize.y
:

LeslieS | 2023-01-04 17:47

gracias jeejj estoy iniciando en esto y se que no es escusa debo poner mas atención y no solo copiar

GURFREX | 2023-01-05 06:15

:bust_in_silhouette: Reply From: SQBX

Cambie la función motion_ctrl() a esta

func motion_ctrl():
    if get_axis() == Vector2.ZERO:
        motion = Vector2.ZERO
    else:
        motion = get_axis().normalized() * SPEED

        position.x = clamp(position.x, 0, screensize.x)
        position.y = clamp(position.y, 0, screensize.y)

gracias ya vi cual fue mi error eso me pasa por no ver bien

GURFREX | 2023-01-05 06:11