我正在使用LibGdx和Tiled,当在屏幕上移动时,游戏上会出现水平和垂直线条.如有必要,我可以发布您需要的任何代码.如何让这些线路停止?

这是一行gfycat的GIF:
http://gfycat.com/FastUnnaturalAmericanwirehair
编辑:
这是一个小的bitbucket存储库,尽可能小,它有相同的故障:
甲瓷砖地图对象帽子的位置的x,y中的像素和在度的旋转.
我正在从地图加载坐标和旋转,并尝试将它们分配给box2d Body.位置模型之间存在一些差异,例如Tiled对象旋转以度为单位,box2d体角度为弧度.
如何将位置转换为BodyDef坐标x,y和角度,以便在正确的位置创建正文?
使用代码:
float angle = -rotation * MathUtils.degreesToRadians;
bodyDef.angle = angle;
bodyDef.position.set(x, y);
Run Code Online (Sandbox Code Playgroud)
当旋转为0时工作,但当旋转不同于0时,正文未正确定位.
我在这里找到了几个提示:
http://www.tutorialsface.com/2015/12/qu ... dx-resolved /
和这里:
https://github.com/libgdx/libgdx/issues/2742
这似乎解决了这个确切的问题,但是这两种解决方案对我来说都没有用,在应用这些转换后,身体对象仍然处于错误状态.如果定位错误,我的意思是身体位于地图区域应该是,但根据其旋转稍微偏离.
我觉得它应该很简单,但我不知道如何调解Tiled和box2d位置之间的差异.
作为参考,这些是我从上面的链接尝试的两个解决方案(在将值x,y,宽度,高度从像素转换为世界单位之后):
float angle = rotation * MathUtils.degreesToRadians;
bodyDef.angle = -angle;
Vector2 correctionPosition = new Vector2(
height * MathUtils.cosDeg(-rotation - 90),
height + height * MathUtils.sinDeg(-rotation - 90));
bodyDef.position.set(x, y).add(correctionPosition);
Run Code Online (Sandbox Code Playgroud)
和
float angle = rotation * MathUtils.degreesToRadians;
bodyDef.angle = -angle;
// Top left corner of object
Vector2 correctedPosition = …Run Code Online (Sandbox Code Playgroud) 我对LibGDX和平铺地图有些问题.我来自Corona SDK(Lua),我使用Lime(第三方lib来处理tmx地图),现在我切换到LibGDX并遵循这个最近的功能:GraphicsTileMaps
我能够使用IsometricTiledMapRenderer渲染器从资源加载等轴测图,并OrthographicCamera显示地图(所有工作都在维基页面中描述).我还能够以编程方式填充地图图层上的一些图块,但是当我尝试使用时,我的问题就出现了AnimatedTiledMapTile:
map = new TmxMapLoader().load(...);
TiledMapTileLayer layer = (TiledMapTileLayer) map.getLayers().getLayer("layer1");
TiledMapTileSet tileset = map.getTileSets().getTileSet("tileset1");
TiledMapTile grassTile = tileset.getTile(4);
TiledMapTile rockTile = tileset.getTile(6);
Array<StaticTiledMapTile> playerTileArr = new Array<StaticTiledMapTile>();
playerTileArr.add((StaticTiledMapTile)tileset.getTile(7));
playerTileArr.add((StaticTiledMapTile)tileset.getTile(8));
Cell grass = new Cell();
grass.setTile(grassTile);
Cell player = new Cell();
player.setTile(new AnimatedTiledMapTile(0.1f, playerTileArr));
layer.setCell(0,0, grass); // <--- This works.
layer.setCell(0,1, player); // <--- When I try this, it causes
// a NullPointerException.
renderer = IsometricTiledMapRenderer(map, 1 / 30f);
...
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?我找到了一个AnimatedTiledMapTile …
我有Tiled2Unity插件.当我开始在Unity中构建我的游戏版本时,无论是独立版本还是其他任何东西,我都会收到以下错误:"构建播放器时出错,因为脚本在编辑器中存在编译错误"
然后它指向我这堂课
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEditor;
namespace Tiled2Unity
{
public class CircleObject : TmxObject
{
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮我弄清问题是什么?
我目前正在尝试将Tiled(Tiled地图编辑器)地图文件中的游戏对象加载到我在C#中制作的游戏引擎中。我正在使用TiledSharp(在此处链接到github )。它使用字典来保存我要加载的每个单独图块(或“游戏对象”)的属性。但是由于某些原因,当我遍历属性时会收到错误消息,如果检查它是否为null,也会收到错误消息
这是我正在使用的代码的片段:
for (int l = 0; l < tmxMap.Tilesets[k].Tiles.Count; l++)
// This line throws an error
if (tmxMap.Tilesets[k].Tiles[l].Properties != null)
// and if I remove the above line, this line throws an error
for (int m = 0; m < tmxMap.Tilesets[k].Tiles[l].Properties.Count; m++)
Run Code Online (Sandbox Code Playgroud)
我得到的错误是字典中不存在给定的键。但是...我什至都不在寻找钥匙。
我想念什么吗?
任何帮助,将不胜感激。
出于某种原因,我不能像在Unity中创建的那样将这些图块映射出来......像素艺术从Tiled导入Unity.
有谁知道如何解决这个问题?提前致谢!
因为害怕重新发明轮子,我想知道:
使用libGDX在自上而下的Tiled(2D)地图上实现基于平滑网格的游戏角色移动的最佳方法是什么?
只要按下箭头键(或者在角色的某个方向上发生触摸事件),角色就应该在瓷砖之间保持平滑移动,并且应该完成限制在按键/触摸释放上的网格位置.运动应独立于帧速率.
我会很高兴一些已经实现的示例可以研究并导致正确的libGDX API使用.
再次感谢您提前帮助我.
值得庆幸的是,我已经能够在没有太大问题的情况下将TMX导入到libgdx游戏中,但是现在这是第一次使用对象层,此时此刻我只想将平台作为对象(即我有1x Tile Layer显示我的背景图像和上面的1x Object Layer.现在我已经看到我可以绘制线条和/或方框,圆圈等来创建"区域",我可以将其拉入我的代码中(善良只知道atm但我会稍后/很快就会知道)
但我在Tiled看到按钮 - 插入平铺(T) - 存在.我正在尝试使用它但是当我使用平台作为平台放置它时,它正好在按下鼠标的地方,除了删除它之外我无法移动它.我现在只想复制粘贴它们的整行,而Level1只能在一条扁平线上放置50个瓷砖,这样我就可以完成所有工作了.对我来说,Tiled不能做到这一点似乎很奇怪,但我花了很多年的时间寻找方法却无法找到它.
我错过了什么,或者这是不可能的?如果是后者,经验丰富的平铺用户(谁制作2d平台游戏)如何在Tiled环境中创建如此简单的示例呢?
在Tiled编辑器中有一个等距映射示例:"isometric_grass_and_water.tmx".此示例显示了具有64x32像素大小的图块的简单等距映射.
我需要知道瓷砖边的大小,所以我只是用了毕达哥拉斯定理:

在直角三角形ABC侧AC =宽度/ 2 = 32并且侧AB =高度/ 2 = 16.因此,区块(BC)的侧面可以被计算为:

所以整块瓷砖是菱形,每边= 35.777.
然而,当我向Tiled添加尺寸为35.77 x 35.77的方形物体时,它不适合网格(它实际上比在瓷砖上更大).但是,如果我添加尺寸为32 x 32的物体 - 它非常适合.
请看一下这张图片(对象A是32x32,B是35.77x35x77):

这怎么可能?Tiled是否使用了某种缩放,或者我的计算出了什么问题?