(Manim)libGDX教程第三期,Box2d与Tiled地图结合
hhshaohao
2022年07月27日 16:29

本期代码:

//初始化debug渲染器

ren2 = new Box2DDebugRenderer();

batch = new SpriteBatch();

//Tiled地图初始化

map = new TmxMapLoader().load("1.tmx");

//Tiled地图渲染器初始化

ren = new OrthogonalTiledMapRenderer(map , 1 / ppm);

//相机

cam = new OrthographicCamera(Gdx.graphics.getWidth() / (ppm + 300), Gdx.graphics.getHeight() / (ppm + 300));

//Box2d世界

world = new World(new Vector2(0, -9.81f), true);

//初始化Bodydef和FixtureDef

BodyDef bdef = new BodyDef();

//BodyDef的类型选择静态(Tiled地图中的碰撞区域不能移动,模拟墙壁和地面的效果)

bdef.type = BodyDef.BodyType.StaticBody;

FixtureDef fdef = new FixtureDef();

//获取地图中所有层

MapLayers layers = map.getLayers();

//获取名称为'ground'的层(就是刚刚编辑的对象层)

MapLayer rectLayer = layers.get("ground");

//获取层内所有对象

MapObjects objects = rectLayer.getObjects();

//获取所有对象中的矩形对象

Array<RectangleMapObject> rmos = objects.getByType(RectangleMapObject.class);

//创建一个for循环,遍历层中的矩形对象

for (RectangleMapObject rmo : rmos)

{

Rectangle rect = rmo.getRectangle();

//定义一个多边形对象并初始化(