Lực ma sát
Thuộc phần Đầu vào và di chuyển trong hành trình Godot của Coddy. Bài học 19 trên 28.
Hầu hết nhân vật trong game dừng lại nhanh hơn lúc bắt đầu di chuyển. Việc giảm tốc khi không nhấn phím nào gọi là ma sát.
Để dùng một con số khác khi dừng lại, code cần hai nhánh. else tạo nhánh thứ hai cho if, và chỉ một trong hai nhánh chạy:
if direction == 0:
velocity.x = move_toward(velocity.x, 0, friction * delta)
else:
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)== kiểm tra xem hai giá trị có bằng nhau không. Một dấu = gán giá trị cho một biến. direction == 0 là đúng khi không nhấn phím nào.
friction nhỏ, chẳng hạn 300, khiến nhân vật trượt như trên băng. Giá trị lớn, chẳng hạn 2400, giúp nhân vật dừng lại chỉ sau vài khung hình.
Thử thách
Trung bìnhKhi bạn thả tay, hãy để nhân vật dừng lại nhanh chóng.
- Đặt dòng
move_towardbên dướielse:. - Phía trên dòng đó, bên dưới
if direction == 0:, giảm dầnvelocity.xvề0bằngfriction * deltavớimove_toward.
Nhấn Chơi, chạy rồi thả tay: nhân vật trượt một chút, rồi dừng lại. 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")
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)
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