2011-10-13 14 views
8

Mój projekt pochodzi jako Cocos2d Box2D szablon i mam problemy tak szybko, jak starałem się stworzyć świat:Xcode: Cocos2d: Nie można stworzyć świat Box2D

world = new b2World(gravity,doSleep); 

daje błąd: Nie pasujący konstruktor do inicjalizacji "b2World".

Plik ma rozszerzenie .mm, zakładam, że jest jakiś problem związany z łączeniem bibliotek? Jeśli tak, używam xCode 4, jak mogę sprawdzić, czy biblioteka jest poprawnie połączona?

Dzięki.

+0

Którą wersję cocos2d używasz? Jeśli jest to cocos2d 2.0 alpha, to powinien on zawierać zaktualizowany szablon projektu "cocos2d with box2d". – LearnCocos2D

Odpowiedz

25

Używasz Box2D v2.2 lub nowszego. b2World constructor nie przyjmuje już dwóch argumentów, tylko jeden (grawitacja). Trzeba ustawić doSleep oddzielnie:

world = new b2World(gravity); 
world->SetAllowSleeping(doSleep); 

To nie będzie jedyną zmianą będzie trzeba dokonać przejścia od Box2D v2.1.x do v2.2.x. Kobold2D ma działający przykładowy projekt Box2D 2.2.1, nawet jeśli nie używasz Kobold2D, możesz uzyskać zaktualizowany kod źródłowy dla podstaw Box2D. W szczególności klasa GLESDebugDraw i jak ustawić ramkę graniczną z ciałem za pomocą wielu kształtów.

+0

wielkie dzięki :) – FBryant87

+0

Dziękuję Steffen. Wydaje się, że oficjalne odwołanie Box2D pomija aktualizację. http://box2d.org/manual.pdf strona 8 wciąż ma stary sposób tworzenia świata. BTW, ustawiłeś bardzo ładny "port nasłuchujący" dla pytań Cocos2D :). –