Не выходи за границы экрана
Часть раздела Ввод и перемещение путешествия по Godot на Coddy. Урок 21 из 28.
Беги влево, и герой уйдёт за край экрана. clamp(value, low, high) удерживает число в заданных границах. Она возвращает low, если value меньше него, high, если value больше него, и в остальных случаях — value. clamp(700, 14, 626) возвращает 626.
Ограничь позицию после перемещения и сохрани результат:
move_and_slide()
position.x = clamp(position.x, 14, 626)position — это середина героя, а ширина героя — 28 пикселей. Поэтому его середина остаётся на расстоянии 14 пикселей от каждого края экрана шириной 640 пикселей, и герой целиком остаётся в поле зрения.
Задание
ЛегкоУдерживай героя целиком на экране.
- После
move_and_slide()задай значениеposition.xс помощьюclamp(). - Ограничь его значениями от
14до626.
Нажми «Играть» и добеги до каждой стороны: герой остановится у края, оставаясь целиком на экране. Затем нажми «Проверить».
Попробуйте сами
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()
Все уроки раздела Ввод и перемещение
1Действия ввода
Нажми, чтобы двигатьсяВлево и вправоОдна осьЧетыре направленияТолько что нажатоНеобработанный ввод4Плавное движение
Плавное ускорениеТрениеПоворачивайся в направлении движенияНе выходи за границы экранаОграничение по обеим осямПотренируйтесь самостоятельно: Песочница Godot