Tôi đang cố gắng giảm dần tốc độ của vật thể, sử dụng thuộc tính "giảm xóc". Sau đó, tôi muốn di chuyển vị trí của vật thể bằng vận tốc. Có vẻ như thế này:Giảm vận tốc với deltaTime?
velocity.x *= velocity.damping;
velocity.y *= velocity.damping;
x += velocity.x;
y += velocity.y;
Không đơn giản hơn thế và hoạt động tốt, nhưng đây là vấn đề của tôi: Tôi đang sử dụng biến deltaTime, có chứa lượng thời gian (tính bằng giây) , bản cập nhật cuối cùng của vòng lặp trò chơi của tôi đã diễn ra. Áp dụng vận tốc là đủ dễ dàng:
x += velocity.x * deltaTime;
y += velocity.y * deltaTime;
Nhưng làm cách nào tôi có thể giải thích cho deltaTime khi tôi nhân đặc tính giảm xóc? Ý tưởng của tôi là, để tìm chuyển vị trong x hoặc y và nhân deltaTime với điều đó, như sau:
velocity.x += (velocity.x * velocity.damping - velocity.x) * deltaTime;
velocity.y += (velocity.y * velocity.damping - velocity.y) * deltaTime;
Tắt nó không hoạt động. Tôi không thực sự hiểu tại sao, nhưng tôi vẫn nhận được kết quả khác nhau khi tôi kiểm tra nó. Nếu tôi chỉ đơn giản là bỏ qua giảm xóc hoặc đặt nó thành 1.0, mọi thứ hoạt động, do đó, vấn đề phải nằm trong hai dòng cuối cùng.
Tại sao bạn trừ đi tốc độ trong đoạn mã cuối cùng? – Matthias
(velocity.x * velocity.damping) là vận tốc mới.x. Tôi trừ đi vận tốc ban đầu.x từ đó, để có được sự khác biệt. – user1925315