01/10/2018, 14:06

Giải thuật để bắn một viên đạn như game gunny

Thấy có bạn làm cái game guny mình cũng muốn làm cái dụ bắn một viên đạn theo hình cầu vồng như trong game ấy, như không biết giải thuật thế nào, có anh chị em nào biết hướng dẫn với?

Quân viết 16:10 ngày 01/10/2018

Giải thuật gì, kiến thức vật lí lớp 10 thôi

Thuc Nguyen Tan viết 16:19 ngày 01/10/2018

Quỹ đạo của nó có phải parabol không bạn?

Đào An viết 16:18 ngày 01/10/2018

VẬT LÝ PHỔ THÔNG

Chuyên đề chuyển động ném ngang, ném xiên, vật lý phổ thông

Giới thiệu chuyên đề chuyển động ném ngang, chuyển động ném xiên, vật lý phổ thông Chuyên đề chuyển động ném ngang, chuyển động ném xiên bao gồm lý thuyết về chuyển động ném ngang, chuyển động ném...


Khác cái là ko có sức gió

Thuc Nguyen Tan viết 16:12 ngày 01/10/2018

giải thuật thì có rồi mà làm sao triển khai nhỉ, có viên đạn không mà phức tạp thế?

//V0 là vận tốc ban đầu, t là thời điểm bất kỳ
function lay_toa_do_vien_dan(V0,t){
}

Văn Dương viết 16:07 ngày 01/10/2018

Giải 2 phương trình theo t là tìm được tọa độ đạn còn gì ??

Tại thời điểm bắn xác định được vận tốc sơ cấp + góc bắn =>

Phương trình vận tốc:
vy = vosin(A) - gt;
vx = vocos(A) + awt.

Phương trình tọa độ:
x=vosin(A)t - gt^2 / 2
y = vo
cos(A)t + awt^2/2.

vo: vận tốc sơ cấp tại thời điểm bắn.
A: góc bắn
g: gia tốc rơi tự do
aw: gia tốc cản của gió.
vx: vận tốc hướng x theo t.

Thuc Nguyen Tan viết 16:18 ngày 01/10/2018

vy = vosin(A) - gt;
vx = vocos(A) + awt.

vy = vosin(A) - gt;
vx = vocos(A) + awt.

Vận tốc theo chiều y giảm dần theo chiều y —> Okay
Còn vận tốc theo chiều x lại tăng dần theo thời gian à?

uh còn cái thét mét nữa là nếu không có gió thì viên đạn bay theo chiều x mãi mãi ?

Thuc Nguyen Tan viết 16:17 ngày 01/10/2018

Lại còn một thắc mắc nữa là tại sao trong các công thức trên lại không đề cập đến khối lượng nhỉ, mình thấy vật càng nặng nó rơi càng nhanh?

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

Vận tốc càng nhanh sức cản không khí càng lớn (tăng theo bình phương vận tốc) nên có giới hạn thôi. Giờ nên tập trung vào mô hình cơ bản trước.

Thuc Nguyen Tan viết 16:18 ngày 01/10/2018

Thế mấy cái game engine của các bạn xài nó không làm sẳn cái này à?

Florastamine viết 16:14 ngày 01/10/2018

wat, sao không dùng libraries có sẵn, 2D thì có Box2D, 3D thì có Bullet, ODE, Havok đó. Vì nếu sau này bạn có mở rộng ra việc phá hủy địa hình, xử lý movement, collision, bouncing, particle effects thì nhiều khi physics engine nó sẽ bao luôn vụ đó.

Nếu muốn viết từ đầu chỉ để học hỏi thì mình không có ý kiến, nhưng nếu mục đích của bạn không nằm trong việc học thì việc viết từ đầu rất counter-productive.

Tao Không Ngu. viết 16:07 ngày 01/10/2018

Hay cho câu " mình thấy vật càng nặng nó rơi càng nhanh" @_@!

rogp10 viết 16:15 ngày 01/10/2018

Sức cản không khí :v (drag).

Thuc Nguyen Tan viết 16:11 ngày 01/10/2018

uh, mình cũng nhớ: Nếu không có sức cản của không khí thì viên chì và lông ngỗng rơi với tốc độ như nhau; Thí nghiệm này đã được thực hiện tại Tháp gì đó ở Anh…

Văn Dương viết 16:22 ngày 01/10/2018

Trong thực tế viên đạn bay chịu tác động cản của không khí. Gia tốc cản thay đổi theo vận tốc đạn. Nhưng bỏ qua cái này vì ta chỉ viết tương đối chứ không phải đang mô phỏng thí nghiệm vật lý.

Ta chỉ xét đến gió. aw là gia tốc của đạn theo phương Ox mà lực gió tác động lên đạn. Coi như là không đổi đi. Thực tế nó thay đổi theo vận tốc đạn nhưng không xét khó thế làm gì.

Gió ngược Ox thì aw mang dấu âm và ngược lại.

Khi đạn gặp mục tiêu hoặc rơi chạm đất thì kết thúc quá trình bay nên không có chuyện nó bay mãi theo hướng x hay y.

Thuc Nguyen Tan viết 16:10 ngày 01/10/2018

Gió ngược Ox thì aw mang dấu âm và ngược lại.

Mình nghĩ lực ma sát của không khí thì lúc nào cũng tồn tại nếu không Vx sẽ không đổi theo thời gian, gọi là akk

Văn Dương viết 16:18 ngày 01/10/2018

Khi bạn càng muốn giống thực tế thì phương trình của bạn càng phức tạp.
Ví dụ :
Nhiệt độ cao thì không khí loãng -> lực cản/ ma sát giảm <> Nhiệt độ thấp thì không khí “đặc” hơn -> lực / ma sát cản tăng.
Gió không thổi thẳng hướng đạn mà chéo sang 2 bên, lên trên hoặc xuống dưới.
Gió vận tốc không đều.

Đó là những cái tồn tại trong thực tế và trong game để xử lý nó rất khó nhưng nó lại không mang lại hiệu quả gì. Trong trường hợp này bạn cần bỏ qua hết chúng và chỉ cần xét tác động của gió-chính là yếu tố bạn muốn đưa vào game. Khi có gió là có lực -> gán cho aw một giá trị cố định tỷ lệ với vận tốc gió. Có gia tốc khác 0 thì vận tốc đạn sẽ luôn thay đổi.

Le Hoai viết 16:08 ngày 01/10/2018

Bỏ qua sức cản không khí.
Vật càng nặng thì lực hấp dẫn càng lớn :
F = G * m / (d * d).
Nhưng ngược lại,để gia tốc (đạt được 1 vận tốc nào đó) 1 vật có khối lượng lớn thì lại cần 1 lực lớn theo công thức :
F = maa;
Từ đó suy ra cùng với 1 khoảng cách , thì các vật có khối lượng lớn hay bé đều có cùng 1 gia tốc khi rơi xuống đất. (a = g ~ 10m/s).

明玉 viết 16:23 ngày 01/10/2018

Lấy vector gia tốc của gió, cộng với vector gia tốc trọng trường rồi cộng với vector gia tốc ném là ra thôi (chắc thế )

Thuc Nguyen Tan viết 16:16 ngày 01/10/2018

https://codepen.io/liabru/pen/yGbFt

Đúng là các thư viện có hổ trợ

Quân viết 16:07 ngày 01/10/2018

Nếu xét cả sức gió thì cứ coi như lực gió là không đổi theo 1 phương nào đó, tách vector lực cộng vào giá tốc trọng trường và lực ném ngang thôi có gì đâu

Bài liên quan
0