Wystrzelenie pocisku z pistoletu zamiast z kamery, ale zachowując celność względem celownika

14

Pracuję nad grą FPS i napotkałem problem. W mojej grze renderowany jest pistolet gracza, a także celownik na środku ekranu - tak:

wprowadź opis zdjęcia tutaj

Po pierwsze, wyobraźmy sobie, że nie było renderowanego modelu broni. Następnie wystrzelenie pocisku jest łatwe - po prostu spawnujesz pocisk dokładnie tam, gdzie znajdują się „oczy” gracza, a następnie używasz trigu, aby obliczyć prędkość na podstawie kierunku, w którym gracz patrzy.

Ale teraz, kiedy dodamy model broni ... nie możemy po prostu odrodzić pocisk w miejscu, w którym znajdują się oczy graczy, musimy go odrodzić na końcu pistoletu (prawda?). Więc robisz to, ale potem ... jak poruszasz pociskiem w taki sposób, aby trafiał w dowolne miejsce, w które celowała celownik?

Pamiętaj, że kula w mojej grze (w tym przypadku to rakieta) będzie poruszać się wystarczająco wolno, aby można było zobaczyć jej ruch, więc pewne obejście, które zwykle działałoby, gdyby kula była zbyt szybka, aby ją obserwować, nie zadziała . Na przykład, jeśli go nie spawnujesz, więc wygląda na to, że wychodzi on z końcówki pistoletu, gracz na pewno to zauważy.

Aaron
źródło
1
Odpowiedź na twoje pytanie brzmi: Raycasting =)
Gray
To wszystko dym i lustra; wyrenderowane pociski nie mają nic wspólnego z faktyczną ścieżką lub promieniem pocisku.
congusbongus
@ congusbongus Mam na myśli, że pocisk OFC nie musi być dokładnie dopasowany do matematyki samej kuli, ale jeśli nie zrobisz tego do pewnego stopnia, zacznie wyglądać źle, i właśnie tam utknąłem .
Aaron,

Odpowiedzi:

20

Wystrzel promień z kamery przez środek / siatkę w świat. Dowiedz się, gdzie na świecie uderza. Wystrzel kulę z lufy pistoletu w tym miejscu zamiast prosto z pistoletu.

Punkty bonusowe za animowanie rąk i pistoletu, aby wskazywały w tym kierunku podczas celowania, więc kula nadal wygląda, jakby strzelała prosto z pyska, zamiast wychodzić pod kątem.

Jeśli wykonasz animację, zawsze możesz wystrzelić pocisk prosto z pyska. Po prostu staraj się, aby pistolet celował w punkt, w który celuje celownik w rozsądnych granicach. Pomocne jest również posiadanie dwóch siatek w taki sposób, że oba pokazują naturalnie środek ekranu, na który gracz próbuje celować, i punkt, na który celuje broń.

Albo możesz pokazać pojedynczą siatkę, w którą celuje broń po zakończeniu animacji i wystrzelić pocisk w tym kierunku, a nie w miejsce, w którym obecnie celuje broń w swojej animacji. W ten sposób celownik zawsze pokazuje, co trafi gracz, ale nie będzie udawał, że możesz np. Strzelać dookoła ściany tylko dlatego, że kamera widzi coś, czego pistolet nie jest w stanie zrobić.

Wszystkie zostały wykorzystane w prawdziwych grach. To, co wolisz, będzie zależeć od stylu gry, którą tworzysz, jaki kompromis między symulacją a grą, do której dążysz, niezależnie od tego, czy jest to gra wieloosobowa, czy nie itp.

Sean Middleditch
źródło
wiele gier nawet nie używa modeli pocisków, ale po prostu wystrzeliwuje promień, jak wspomniano, aby sprawdzić kolizję, co możesz zrobić, to wyświetlić inny model pistoletu innym graczom niż to, co pojawia się w widoku obecnych graczy i wyrównać to z miejscem, w którym pocisk zostaje zwolniony z postaci, która wydaje się
celować w
Źródło Counter-Strike używa tej metody (ma modele widoku, gracza i świata)
Matthew Pigram
-1

Co powiesz na pozbycie się siatki celowniczej? Wtedy pociski mogłyby wystrzelić prosto z pistoletu, tak jak w rzeczywistości. Wycelowanie w celowniki oznaczałoby wtedy więcej, ponieważ wyrównałbyś cel i lufę pistoletu (minus kilka cali w modelu gracza).

Jason Reed
źródło
Chociaż wiele gier robi coś takiego, jest to bardzo ogólna decyzja projektowa, która ma wpływ na tempo i walkę gry.
Katana314
Dla mnie jest to bardziej unikanie problemu niż faktyczne jego rozwiązanie.
Aaron