Zeichnung benutzerdefinierte Polygone in Box2D
Mache ich ein Flash-Spiel, und ich angetroffen habe ein echt komisches problem beim zeichnen eines Polygon-Form in Box2D.
Hier ist der code, den ich verwenden:
var fixtureDefs:Array = new Array();
...
var fDef:b2FixtureDef = new b2FixtureDef();
fDef.density = 0;
fDef.shape = new b2PolygonShape();
b2PolygonShape(fDef.shape).SetAsArray(vertexArray);
fixtureDefs.push(fDef);
//This gets repeated several times, so that at the end you get a body consisting of several convex shapes.
...
var bD:b2BodyDef = new b2BodyDef();
bD.type = b2Body.b2_staticBody;
bD.position.Set(300/Constants.RATIO,200/Constants.RATIO);
var body:b2Body = Constants.world.CreateBody(bD);
...
for each(var fD:b2FixtureDef in fixtureDefs) {
body.CreateFixture(fD);
}
Wo vertexArray ist ein gültiges array mit 4 b2Vec2 Eckpunkte, die eine konvexe Form.
Das problem ist, wenn ich testen, Kollisionen nicht richtig funktionieren, für diesen Körper. Die meisten anderen Objekte -Feinde, die Benutzer-gesteuerte Figuren - Durchlauf gerade durch, als wenn der Körper nicht da. Einige raycasts passieren, wie gut.
Empörend genug, eine Art der stellen, die ich habe (eine benutzerdefinierte Feind) irgendwie erkennt der Körper und kollidiert mit ihm. Die raycasts, die Besondere Art der Feind versucht tun Arbeit - wenn dein Charakter verbirgt sich hinter dem polygon, es ist wie Sie können ihn nicht sehen.
Die andere seltsame Sache: wenn ich versuche, den gleichen code, nur gehen für SetAsBox statt SetAsArray, es funktioniert genau so, wie es sollte.
Ich bin mit einem benutzerdefinierten ContactListener Klasse, aber ich habe nicht getan, alle Kontakt-Filterung (es sei denn, es ist möglich, das zu tun, ohne es zu bemerken).
Ich bin mit der Flash 9-version der Box2D 2.1.
Irgendwelche Vorschläge? Übersehe ich etwas offensichtliches oder habe ich (Gott bewahre!) haben Sie einen Fehler entdeckt? Vielen Dank für Ihre Hilfe!
Andrey
Du musst angemeldet sein, um einen Kommentar abzugeben.
Heyo Andrey,
2.1 ein-eher auf der strengen Seite, so haben Sie zu erklären, fast alles für ihn zu arbeiten ordnungsgemäße.
AS3-OOP-
Denken Sie daran, dass jeder zeigen muss, um das Recht des einen vor.
Platzierung von Links nach rechts
Ich bin nicht sehr gut im erklären, was das ist, aber ich hoffe diese Hilfe! -Null
Heyo wieder,
Wie die meisten von der version von Box2D wurden von verschiedenen Leuten geschrieben die Quelle ändern, ist mit es, um besser an die Programmiersprache s, die Dokumentation, die Sie auf der Suche waren wahrscheinlich bezeichnet, eine andere Sprache, AS3 wahrscheinlich C++.
Ihre Quelle haben sollten, kommen Sie mit einem Ordner mit der Dokumentation für die version in Sie, sollte ein Ordner 'Docs'.