hvordan du tilføjer hitdetektering til kugler


Svar 1:

Først begynder jeg med at sige, at OpenGL var et emne, jeg kun tog for interesse og ikke har meget viden om datalogi som helhed. Men en nem måde, jeg ser for dette, er, at spilverdenen dybest set er en 2D-skærm. Forestil dig, at det mål, du vil skyde, er lavet af fly. Nu er det muligt at få 3D-punktet fra 2D (der er bestemmelser i OpenGL). Alt, hvad vi har brug for, er omfanget af pistolen, der peger i spillet. Fra x-, y-koordinaterne får du X, Y, Z. Tjek nu med dette, om X, Y, Z falder inden i målplanet (i dette tilfælde et rektangel eller trekant).


Svar 2:

Den bedste måde at gå på er kollisionsstrålebesætning. På denne måde får du al den information, du har brug for til at behandle dit kugleskud: kollisionspunkt, normal vektor ved hitpunkt (kan bruges til forskellige ting, som at udsende partikler i korrekt retning), polygon, du rammer, enhed, du rammer. Kollision ray cast skal arbejde på dit rumpartitioneringsobjekt for at søge efter en hurtig liste over objekter, du tester kollision med din ray. Overvej, når du opbygger kollisionsdetekteringsmetoder mellem kugle, kasse, cylinder og andre primitiver for også at tilføje ray vs primitive collider. For at bygge hele systemet tager det lidt arbejde, men resultaterne er givende.


Svar 3:

Raycasting. Du projicerer en stråle fra pistolens tønde og ser, om strålen kolliderer med en anden tegns maske. Mange 3D-biblioteker har understøttelse af raycasting.

Her er en som et eksempel.