我是遊戲開發新手。Cocos2d/Box2d。如何從tilemap .tmx生成物理體?
我試圖做的是tilemap的我已經從瓷磚創建我的遊戲作爲一個物理體(IES),我使用C++和Boxd2加載.tmx。我的瓷磚地圖只顯示我想要碰撞的瓷磚,如地板和一些平臺。
重要的是要注意,我在Windows編程中是重要的,所有的文檔,我發現大約IOS或舊版本,像b2BodyDef bodyDef一些功能似乎並沒有工作。
我是遊戲開發新手。Cocos2d/Box2d。如何從tilemap .tmx生成物理體?
我試圖做的是tilemap的我已經從瓷磚創建我的遊戲作爲一個物理體(IES),我使用C++和Boxd2加載.tmx。我的瓷磚地圖只顯示我想要碰撞的瓷磚,如地板和一些平臺。
重要的是要注意,我在Windows編程中是重要的,所有的文檔,我發現大約IOS或舊版本,像b2BodyDef bodyDef一些功能似乎並沒有工作。
我目前做的,你在我最新的遊戲被描述的一致,唯一的區別是我用cocostudio建立在我的遊戲的一切,包括我的地圖。我這樣做的原因是,我可以控制所需的一切,我使用預先定義的命名約定來指示物理邊緣,然後我讀取並確定其尺寸並構建邊緣體。
高度概括
繼續在這裏之前是我在做你.tmx tilemap的假設。對於想要創建爲物理對象的對象,您有唯一的標識符 (您可以使用它的名稱將其拉出並檢查它)。
僞上下的代碼下面
auto tileNode = listOfNodes.at(nodeIndex);
b2BodyDef tileBodyDef;
tileBodyDef.type = b2_staticBody;
tileBodyDef.position.Set(tileNode->getPositionX()/Pixel_To_Meter_Ratio,
tileNode->getPositionY()/ Pixel_To_Meter_Ratio);
auto b2PolygonShape tileShape;
tileShape.SetAsBox(tileNode->getBoundingBox().size.width/Pixel_To_Meter_Ratio,
tileNode->getBoundingBox().size.height/Pixel_To_Meter_Ratio);
auto tileBody = physicsWorld->CreateBody(tileBodyDef);
// This can be used later on when you want to have different reactions for different collisions.
tileBody->SetUserData("CollidableTile");
這將創建和放置這些對象在你的物理世界,讓在那裏的其他機構與它相撞。如果您的球員在世界上有自己的身體,基本的碰撞將爲您處理。
我使用cocostudio作爲比UI工具,這將完全涵蓋這更寫一篇博客文章。我希望這可以幫助,請讓我知道這個解決方案是你在找什麼。
你是如何創造身體的?平鋪不會生成物理本身 - 您可以創建一些形狀,然後在您的應用程序中創建基於此的物理 –