Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Box2D] Jak sprawdzić czy jest kontakt?

Ostatnio zmodyfikowano 2013-01-01 14:11
Autor Wiadomość
ridic14
Temat założony przez niniejszego użytkownika
[Box2D] Jak sprawdzić czy jest kontakt?
» 2012-12-31 14:56:34
Jest taki problem z grą otóż: Mam sobie gracza i wroga którzy nawzajem do siebie strzelają... i tu jest problem bo nie wiem jak sprawdzić kiedy pocisk styka się z celem. Chciałem na początek zrobić tak że jak dotknie "celu" pocisk to odejmuje mu HP, jeśli trafi w cokolwiek innego to usuwam go. Tylko problem że nie mam jak sprawdzić, czy jest "jakaś?, coś?" co pomoże mi to sprawdzić czy nie ma co się łudzić i pisać swoje rozwiązanie?
P-72520
DejaVu
» 2012-12-31 15:27:06
Da się to zrobić za pomocą standardowych narzędzi. Przeczytaj tutorial Box2D od deski do deski (dokładniej to sekcja "4.10 Overlap" oraz sekcja "4.11 Contact Manifolds").
P-72523
ridic14
Temat założony przez niniejszego użytkownika
» 2012-12-31 15:49:34
Gdzie ja taki tutorial znajdę we wszyskich jakie widziałem jakieś klasy im się pochciało robić:/, zamiast jakoś normalnie to zrobić
P-72525
DejaVu
» 2012-12-31 15:55:02
To jest oficjalny tutorial....
Frazy, które należy wpisać w wyszukiwarkę google:
http://www.box2d.org/manual.html
P-72527
ridic14
Temat założony przez niniejszego użytkownika
» 2012-12-31 17:12:49
No na podstawie tutka to taki kod mi się wywala:
C/C++
for( b2ContactEdge * ce = bullet->GetContactList(); ce; ce = ce->next )
{
    b2Contact * c = ce->contact;
    endit = c->GetFixtureA()->GetBody()->IsBullet();
    std::cout << endit << std::endl;
}

czyli gra się włącza a przy tej części pisze że System nui
P-72544
DejaVu
» 2012-12-31 17:14:41
Bo tutorial pokazuje 'jak używać', a nie 'jak napisać bezpieczny kod'. Sprawdzaj czy wskaźniki są !=NULL zanim cokolwiek z nimi zrobisz dalej.
P-72545
ridic14
Temat założony przez niniejszego użytkownika
» 2012-12-31 18:03:13
C/C++
for( b2ContactEdge * ce = bullet->GetContactList(); ce; ce = ce->next )
{
    if( ce != NULL )
    {
        b2Contact * c = ce->contact;
        endit = c->GetFixtureA()->GetBody()->IsBullet();
        std::cout << endit << std::endl;
    }
}
 To też wywala apilikację

A w tym manualu nawet nie wyjaśnili czym jest ten index:
bool overlap = b2TestOverlap(shapeA, indexA, shapeB, indexB, xfA, xfB);
P-72556
Mrovqa
» 2012-12-31 19:20:14
C/C++
if( ce != NULL )
{
    b2Contact * c = ce->contact; // a to wskaznikiem juz nie jest?
    endit = c->GetFixtureA()->GetBody()->IsBullet();
    std::cout << endit << std::endl;
}
P-72564
« 1 » 2
  Strona 1 z 2 Następna strona