التزم بحدود الشاشة
جزء من قسم الإدخال والحركة في رحلة 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()
جميع دروس الإدخال والحركة
تدرّب بنفسك: Playground لـ Godot