Giới hạn trong màn hình
Thuộc phần Đầu vào và di chuyển trong hành trình Godot của Coddy. Bài học 21 trên 28.
Chạy sang trái sẽ khiến nhân vật chính rời khỏi màn hình. clamp(value, low, high) giữ một số trong khoảng giữa hai đầu mút. Hàm này trả về low nếu value nhỏ hơn giá trị đó, high nếu value lớn hơn giá trị đó và trả về value trong các trường hợp khác. clamp(700, 14, 626) là 626.
Giới hạn vị trí sau khi di chuyển rồi lưu kết quả:
move_and_slide()
position.x = clamp(position.x, 14, 626)position là tâm của nhân vật chính, còn nhân vật rộng 28 pixel. Vì vậy, tâm luôn cách mỗi mép màn hình 640 pixel 14 pixel, giúp toàn bộ nhân vật luôn nằm trong tầm nhìn.
Thử thách
DễGiữ toàn bộ nhân vật trên màn hình.
- Sau
move_and_slide(), đặtposition.xbằngclamp(). - Giới hạn giá trị trong khoảng từ
14đến626.
Nhấn Chơi rồi chạy về mỗi phía: nhân vật dừng ở mép màn hình và vẫn nằm trọn trên màn hình. Sau đó nhấn Kiểm tra.
Tự làm thử
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()
Tất cả bài học trong Đầu vào và di chuyển
4Chuyển động mượt mà
Tăng tốc từ từLực ma sátQuay mặt theo hướng di chuyểnGiới hạn trong màn hìnhGiới hạn cả hai trục5Dự án: nhân vật anh hùng trong game đi cảnh
Anh hùng: chạyAnh hùng: nhảyTự luyện tập: Playground Godot