Tôi đang sử dụng C # / XNA và đã được thông báo khá nhiều lần về việc không trộn mã cập nhật với mã rút tiền - và tôi chắc chắn là không! Nhưng bất cứ ai cũng có thể vui lòng mô tả chính xác "mã logic" là gì?
Như đã thấy ở đây: http://bloss.msdn.com/b/shawnhar/archive/2007/07/25/under Hiểu-getime.aspx
[...] Đảm bảo bạn đặt tất cả logic trò chơi của mình vào phương thức Cập nhật (không phải trong Draw!) Và mọi thứ sẽ chạy ở tốc độ không đổi tốt.
Tôi đang hỏi điều này vì tốc độ trò chơi của tôi dao động so với FPS. FPS chậm bằng với các đối tượng chuyển động chậm và ngược lại. Và vâng, tôi đang bao gồm position += speed * (float)gt.ElapsedGameTime.TotalSeconds;
mã dự kiến .
Đây có lẽ là một câu hỏi tân binh lớn, nhưng tôi chỉ muốn hoàn toàn rõ ràng về định nghĩa của điều này.
gt.ElapsedGameTime.TotalSeconds
là số giây trôi qua từ khi bắt đầu chương trình (trò chơi). Nếu bạn nhân tốc độ của mình với tốc độ đó, thì sau 5 giây chơi, tốc độ của bạn sẽ nhanh hơn 5 lần (trừ trường hợp đặc biệt khi tốc độ được đặt thành 0). Không chắc chắn những gì bạn có thể có sẽ làm cho điều đó không đúng sự thật, nhưng tôi tò mò.
iii
tôi tăng thủ công mỗi bản cập nhật, vì tôi không muốn nó trong vài giây, tôi muốn các bước hoặc khung. Tôi có thể thấy rằng cách của bạn là một cách hợp lệ của những thứ mã hóa mềm mặc dù.
position = speed * ...TotalSeconds
. Chú ý là=
không+=
. Nếu+=
chỉ cần bạn gõ, thì vị trí của bạn sẽ bay ra khỏi màn hình gần như ngay lập tức.