Tăng tốc từ 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 18 trên 28.
Nhân vật chính đạt tốc độ tối đa chỉ trong một khung hình rồi dừng lại cũng chỉ trong một khung hình. Cảm giác chuyển động khá cứng.
move_toward(from, to, step) đưa số from tiến về to tối đa step, không vượt quá giá trị đó. move_toward(0, 220, 15) cho kết quả 15. Lặp lại mỗi khung hình, hàm này cho kết quả 30, 45 rồi tiếp tục như vậy cho đến 220.
Dùng hàm này cho velocity.x, hướng đến tốc độ mà các phím yêu cầu:
var direction = Input.get_axis("move_left", "move_right")
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)acceleration là tốc độ tăng thêm mỗi giây, nên cần nhân với delta. Với giá trị 900, nhân vật chính đạt tốc độ 220 trong khoảng một phần tư giây. Khi không nhấn phím nào, mục tiêu là 0, nên nhân vật chính giảm tốc rồi dừng lại.
Thử thách
Trung bìnhGiúp nhân vật tăng tốc và giảm tốc mượt mà.
- Lưu
Input.get_axis("move_left", "move_right")vàovar direction. - Đặt
velocity.xbằngmove_toward(velocity.x, direction * speed, acceleration * delta).
Nhấn Chơi và giữ một phím mũi tên: nhân vật tăng tốc đến 220 rồi giảm tốc khi bạn thả phím. Sau đó, nhấn Kiểm tra.
Tự làm thử
extends CharacterBody2D
var speed = 220
var acceleration = 900
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
velocity.x = Input.get_axis("move_left", "move_right") * speed
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