Biến movingVectorX và movingVectorY có nghĩa gì?

chi tiết bài hướng dẫn code game ở đây ạ
https://o7planning.org/vi/10521/huong-dan-lap-trinh-android-game-2d-cho-nguoi-moi-bat-dau
có ace nào giải thích giúp e chỗ này với biến movingVectorX và movingVectorY có nghĩa là gì với ạ , và sao chỗ tính tọa độ mới của nhân vật lại tính như thế này ạ

// Tính toán vị trí mới của nhân vật.
this.x = x +  (int)(distance* movingVectorX / movingVectorLength);
this.y = y +  (int)(distance* movingVectorY / movingVectorLength);

Trong bài mình nghĩ là họ đã giải thích ý nghĩa của movingVectorX và movingVectorY rồi. Đó là số pixel nhân vậy cần di chuyển theo chiều X và Y.
Trong công thức, ta có distance = elapsedTime*VELOCITY
Ở đây người hướng dẫn đặt tên có thể sẽ gây hiểu nhầm vì Velocity là đại lượng vector có hướng, hay còn gọi là vận tốc nhưng trong bài viết tác giả muốn sử dụng nó là số pixel di chuyển trên giây thì nên được đặt là SPEED.

Bây giờ, ta muốn di chuyển nhân vật dọc theo vector (10, 5) với vận tốc SPEED. Nhưng ta không biết ta cần di chuyển với vận tốc bao nhiêu theo x và y cả Vì để biết được vị trí nhân vật, ta áp dụng công thức.

x = x +elapsedTime*speedX;
y = y +elapsedTime*speedY;

Ta có khoảng thời gian cần để nhân vật tiến tới vị trí (10,5) là t = vectorLength/SPEED và ta mong đợi x đi tới điểm 10 và y đi tới điểm 5 cũng trong khoảng thời gian này. Từ đó, dễ dàng tìm được speedX = movingVectorX/t (y tương tự).
Gộp chung lại, ta có:

x = x + (elapsedTime*SPEED)*movingVectorX/vectorLength;
x = x + distance*movingVectorX/vectorLength;

(tương tự với y)

2 Likes

Khoảng cách bạn di chuyển là cạnh huyền của tam giác vuông, còn chiều cao với chiều ngang có tỉ lệ vy : vx. Vậy theo tam suất thuận ta chia cạnh huyền rồi nhân với vx hay vy :slight_smile:

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?