01/10/2018, 14:56

SFML tạo class Bullet


http://codepad.org/5E9WkDMx
Đây là class để bắn viên đạn, khi bắn thì e muốn viên đạn hướng theo con trỏ chuột, nhưng nó lại ra thế này


các a c chỉ giúp e với ạ

Aragami1408 viết 17:10 ngày 01/10/2018

Bạn đã include các thư viện này chưa:

#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>

Nó báo lỗi như thế vì bạn chưa khai báo thư viện như thế đó

Nguyen yen viết 17:03 ngày 01/10/2018

M cài rồi nhé, m chỉ trích nguyên class và đoạn trong thân chương trình thôi. Chương trình m chạy bình thường nhưng nó ra k đúng ý m ý. Mình muốn viên đạn nó hướng theo chiều con trỏ mà nó ra như vậy. B có thể chỉ m k?

http://codepad.org/xZHkXAf1

Aragami1408 viết 16:57 ngày 01/10/2018

Bạn đã xem video này chưa! Chắc do cách config chưa đúng:

Nguyen yen viết 17:04 ngày 01/10/2018


Đây là m copy code lên codepad nên nó báo lỗi thư viện chứ trên visual thì hoàn toàn bình thường. M muốn hỏi thuật toán nhé b , k phải lỗi thư viện

Aragami1408 viết 17:03 ngày 01/10/2018


Copy code từ visual lên codepad thì 100% là lỗi là đúng rồi. Vì codepad chỉ hỗ trợ các thư viện chính của nó thôi. Chứ làm gì mà add được cả cái sfml lên. Mà lần sau có lỗi gì về thuật toán thì nhớ nói rõ luôn đi nhé. Chứ cứ đưa hình như này chả ai hiểu được đâu bạn à

Nguyen yen viết 17:05 ngày 01/10/2018

m có nói rồi mà , m minh họa cho dễ hiểu thôi

Aragami1408 viết 17:06 ngày 01/10/2018

Ok bạn! Đăng hình minh họa cho dễ hiểu thì cũng đúng. Nhưng bạn nên nói thêm về cái vấn đề chính bạn đang cần phải xử lý trong topic này. Chịu khó gõ một chút đi

Nguyen yen viết 16:58 ngày 01/10/2018

M có tải lên class viên đạn, khi nhấn chuột trái thì có đạn bay ra đó, nhưng nó chỉ theo một hướng thẳng đó. Ý m muốn hỏi làm sao cho nó hướng theo con trỏ chuột.( m làm tương tự như nhân vật mà k đc). Chứ m đăng hơn trăm dòng code lên, chắc k ai rảnh để giúp m

viết 17:11 ngày 01/10/2018

bạn có học về vector chưa, nếu rồi thì dễ lắm: vận tốc viên đạn có 2 thuộc tính là hướng và tốc độ. Tìm hướng (là 1 vector) bằng cách lấy tọa độ con chuột trừ cho tọa độ cây súng. Sau đó “normalize” vector hướng, rồi nhân vector hướng với tốc độ là ra vận tốc của viên đạn (là 1 vector)

//get bullet velocity:
direction = mousePosition - gunPosition
normDirection = normalize(direction)
bulletVelocity = normDirection * bulletMoveSpeedPerFrame

//update bullet:
bullet.move(bulletVelocity)

“normalize” là chuyển về vector cùng hướng nhưng có độ dài là 1. Ví dụ (3, 4) được chuyển về (0.6, 0.8), cùng hướng x/y = 0.75 nhưng 0.62 + 0.82 = 1

Nguyen yen viết 17:12 ngày 01/10/2018

Cảm ơn bạn nhé, rất dễ hiểu

Bài liên quan
0