Menu
CoddyTech

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.

challenge icon

Thử thách

Dễ

Giữ toàn bộ nhân vật trên màn hình.

  1. Sau move_and_slide(), đặt position.x bằng clamp().
  2. Giới hạn giá trị trong khoảng từ 14 đến 626.

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

Tự luyện tập: Playground Godot