Limite à Tela
Parte da seção Entrada e movimento do Journey de Godot da Coddy. Lição 21 de 28.
Corra para a esquerda e o herói sairá da tela. clamp(value, low, high) mantém um número entre dois limites. Ela retorna low se value for menor que esse limite, high se value for maior que esse limite e, caso contrário, value. clamp(700, 14, 626) é 626.
Limite a posição depois de se mover e armazene o resultado:
move_and_slide()
position.x = clamp(position.x, 14, 626)position é o centro do herói, e o herói tem 28 pixels de largura. Assim, seu centro permanece a 14 pixels de cada borda da tela de 640 pixels, e o herói inteiro permanece visível.
Desafio
FácilMantenha o herói inteiro na tela.
- Depois de
move_and_slide(), definaposition.xcomclamp(). - Limite-o entre
14e626.
Pressione “Jogar” e corra para cada lado: o herói para na borda, totalmente na tela. Depois, pressione “Verificar”.
Experimente você mesmo
extends CharacterBody2D
var speed = 220
var acceleration = 900
var friction = 2400
var gravity = 1000
var jump_velocity = -500
func _physics_process(delta):
velocity.y += gravity * delta
if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = jump_velocity
var direction = Input.get_axis("move_left", "move_right")
if direction == 0:
velocity.x = move_toward(velocity.x, 0, friction * delta)
else:
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)
if direction > 0:
$Look.scale.x = 1
if direction < 0:
$Look.scale.x = -1
move_and_slide()
Todas as lições de Entrada e movimento
1Ações de entrada
Pressione para moverEsquerda e direitaUm eixoQuatro direçõesRecém-pressionadoEntrada não tratada4Movimento Suave
Acelere aos PoucosAtritoVire na Direção do MovimentoLimite à TelaLimite nos Dois EixosPratique por conta própria: Playground de Godot