我正在制作带有平铺地图的游戏,已经实现了,并且已将所有静态物体添加到Box2d世界中。但是,当我添加动态身体时,无论速度多么高,它都太慢了。经过一些研究,我发现我需要使用每米像素(PPM)缩放地图。但是,当我尝试通过在正交地图渲染器中传递单位比例来缩放地图时,与地图一起,如下所示:
mapLoader = new TmxMapLoader();
map = mapLoader.load("game_map1.tmx");
mapRenderer = new OrthogonalTiledMapRenderer(map, 1/PPM);
除非PPM 1,否则我会得到黑屏,而不是地图。我也在缩放视口,但这似乎不是问题。因为当我尝试仅做视口时,渲染的地图和图形更大。
我也尝试通过setTransform()移动方法,如下所示>
private void handleInput(float delta) { if(Gdx.input.isTouched()){ float diff_x = Gdx.input.getX() - (gameport.getScreenWidth()/2); float diff_y = Gdx.input.getY() - (gameport.getScreenHeight()/2); if(diff_x != 0) { float new_x = player.body.getPosition().x + diff_x / Math.abs(diff_x); float new_y = player.body.getPosition().y - diff_y / Math.abs(diff_x); player.body.setTransform(new_x, new_y, 1); }
但是这种方式的碰撞并不完美,动态对象有时会穿过墙壁(静态对象)或卡在其中。缩放或修复set-transform方法的任何帮助将不胜感激。
我现在的目标是使我的对象在尝试穿过墙壁时与墙壁碰撞时在地图中移动。
我正在制作带有平铺地图的游戏,已经实现了,并且已将所有静态物体添加到Box2d世界中。但是,当我添加动态主体时,无论...
问题似乎是,maprenderer的构造函数中的“ Unitscale”参数必须是浮点数,而不是双精度数,因此您必须将PPM定义为浮点数,或者在要传入的变量旁边放置一个f。