【发布时间】:2020-08-28 21:40:02
【问题描述】:
我正在制作一个带有已实现的平铺地图的游戏,并且我已将所有静态物体添加到我的 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 方法的帮助将不胜感激。
我现在的目标是让我的对象在地图中移动,同时如果它试图穿过它们,它会与墙壁发生碰撞。
【问题讨论】:
标签: java android libgdx rendering box2d