Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałAneta Krzemińska Został zmieniony 8 lat temu
1
Box2D Bodies – Fixture
4
Konstruktor struktury b2BodyDef
5
Typy ciała sztywnego: b2_dynamicBody b2_staticBody b2_kinematicBody
6
b2_dynamicBody Posiada masę Podlega działaniom sił Może zostać wprawione w ruch liniowy i rotacyjny Koliduje z ciałami dynamicznymi i statycznymi
7
b2_staticBody Nie posiada masy Nie podlega działaniom sił Nie może zostać wprawione w ruch liniowy ani rotacyjny Kolidują z nim ciała dynamiczne
8
b2_kinematicBody Nie podlega działaniom sił Może zostać wprawione w ruch liniowy i rotacyjny Może kolidować z ciałami dynamicznymi, nie koliduje z innymi ciałami kinetycznymi
9
Właściwości ciała i metody klasy b2Body Pola struktury b2BodyDefPrzykładMetody klasy b2Body.positionbodyDef.position.Set(0.0f, 2.0f);b2Body::GetPosition().anglebodyDef.angle = 0.25f * b2_pi;b2Body::GetAngle().linearVelocitybodyDef.linearVelocity = b2Vec2(6.f,0.f);b2Body::GetLinearVelocity().angularVelocitybodyDef.angularVelocity = 50.f;b2Body::GetAngularVelocity().linearDampigbodyDef.linearDamping = 0.0f;b2Body::GetLinearDampig().angularDampingbodyDef.angularDamping = 0.01b2Body::GetAngularDamping().typebodyDef.type = b2_dynamicBody;b2Body::GetType().fixedRotationbodyDef.fixedRotation = true;b2Body::GetFixedRotation()
10
Sleep Każde ciało może zrobić sobie drzemkę bodyDef.allowSleep = true or false; bodyDef.awake = true or false; b2Body::SetAwake(true or false);b2Body::IsAwake();
11
CCD - continuous collision detection Ustawiając parametr.bullet na true (wartość domyślna) mówimy, że kolizje mają podlegać CCD bodyDef.bullet = true or false; b2Body::IsBullet(); b2Body::SetBullet(true or false);
12
Parametr.active Określa czy ciało ma brać udział w symulacji b2Body::IsActive(); b2BodySetActive(bool parameters); bodyDef.active = true or false;
14
Jak tworzymy te „fikstury” ? Metoda CreateFixture i jej dwa oblicza: myBody->CreateFixture(&fixtureDef); myBody->CreateFixture(&shape, 1.0f);
15
Fikstura – jako część ciała b2FixtureDef fixtureDef; // definicja struktury myBody->CreateFixture(&fixtureDef); // przypisanie naszej fikstury do ciała b2FixtureDef fixtureDef; b2Fixture* myFixture = myBody->CreateFixture(&fixtureDef); myBody->DestroyFixture(myFixture); // niszczenie fikstury
16
Konstruktor struktury b2FixtureDef
17
Właściwości ciała i metody klasy b2Fixture Pola struktury b2FixtureDef PrzykładMetody klasy b2Fixture.shapefixtureDef.shape = &Shape;b2Fixture::GetShape().frictionfixtureDef.friction = 0.0f; b2Fixture::GetFriction() b2Fixture::SetFriction(float friction).restitutionfixtureDef.restitution = 0.6f; b2Fixture::GetRestitution() b2Fixture::SetRestitution(float restitution).densityfixtureDef.density = 1.f; b2Fixture::GetDensity() b2Fixture::SetDensity(float density).isSensorfixtureDef.isSensor = true; b2Fixture::IsSensor() b2Fixture::SetSensor(bool sensor)
18
Parametr.filter filtrowanie kolizji Pola klasy b2FilterOpis.categoryBitsBit naszego obiektu b2Fixture.maskBitsMaska bitowa obiektów, z którymi będzie kolidował nasz obiekt.groupIndexIndex grupowy obiektów
19
Parametr.filter filtrowanie kolizji playFixD..filter.categoryBits = 0x0000; // A ma kategorię 0 playFixD.filter.maskBits = 0x0002; // i może kolidować z kategorią 2 (C) playFixD..filter.categoryBits = 0x0001; // B ma kategorię 1 playFixD..filter.maskBits = 0x0002; // i może kolidować z kategorią 2 (C) playFixD..filter.categoryBits =0x0002; // C ma kategorię 2 playFixD..filter.maskBits = 0x0000 | 0x0001; // i może kolidować z kategoriami 1 (B) oraz 0 (A)
20
„Filtrowanie dynamiczne” b2Fixture::GetFilterData(); b2Fixture::SetFilterData(const b2Filter& filter);
21
Czas na projekt www.fizyka.umk.pl/~267512/Projekt_Box2D_Biblioteka.rar
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.