Articles of 地图

我怎么知道一组瓷砖是否构成一个shell?

我有这个瓷砖为基础的游戏,我一直在搞乱,我想有一个方法来检查,如果一组墙砖做封闭的空间。 这里有一些更多的细节:我有一个瓷砖地图。 每个瓷砖都有一个ID。 如果你有这样一组ID: 0,0,0,0,0 0,1,1,1,0 0,1,2,1,0 0,1,1,1,0 0,0,0,0,0 0是草,1是墙,2是地板。 假设这些在二维数组中有一个点,我怎么才能find并确认地砖是否被墙包围。 这个方法也必须是可扩展的。 所以如果楼面面积是2×2,它仍然可以工作。 我已经尝试实施一种方法来检查它,但是我在第一次尝试时失败了。 任何建议?

在Java游戏中链接地图

在我的Java游戏中,我有许多由瓦片组成的随机生成的地图。 我正在努力编写代码来处理地图的进入/退出。 原来,我只有登高和下降。 简单。 进入出口,到达入口。 基本上,我用深度和深度++。 从等级1开始,下降到等级2.如果需要,可以升到等级1。 现在我有地图,有北,东,南,西入口。 所以当我离开北方的时候,我需要到达南入口。 同样,当我进入东方时,我需要到达西门口。 我正在研究Ascend / Descend – / ++系统。 这基本上意味着我必须有代码: eastEntrance将播放器发送给westExit, westEntrance发送玩家到eastExit, northEntrance将播放器发送到southExit, southEntrance将播放器发送到northExit。 westExit发送球员到eastEntrance(东,南,北等)。 这似乎很麻烦。 什么是链接我的地图的好方法? 我真的很感激任何投入。

如何用Open GL绘制一个类似Minecraft的世界

我最近完成了这个 Open GL教程。 本教程展示了如何设置窗口和着色器,并教你如何在屏幕中间绘制一个单一的立方体,这对我来说是有意义的(我认为)。 我想制作一个由“Minecraft”等立方体组成的简单平面世界,但我不知道如何将我的单个巨型立方体变成一堆小立方体,或者如何让小立方体以正确的方式排列。 大部分对我来说没有意义的是坐标系从1到-1,并试图在该空间中画出一堆立方体。 有没有办法将这个坐标空间调整得更加像世界一样,坐标空间的每个单位大致等于一米?

在艺术软件中创建完整的瓷砖地图区域,然后生成相应的瓷砖名称列表?

我对瓷砖地图的创建完全陌生。 我是一名程序员,我想让自己的生活更轻松。 解释我认为我有的问题有点长,但忍耐着我。 场景:根据我的理解,在我的代码中,我需要一个数组来保存我的游戏中的区域/区域的瓦片信息。 可以说,为了简单起见,这个区域是一个10×10的网格,所以在数组中有100个索引。 现在,假设每个索引都包含一个对应于特定瓦片的数字。 例如)1号表示草地砖。 数字4意味着岩石瓦片。 等等 到现在为止还挺好。 从这个数组(和额外的编码),我的瓷砖地图将在我的游戏画面上生成。 问题 :现在我必须为数组中的每个索引单独键入每个磁贴标识符。 现在让我们说,我已经在一个特定的艺术软件中完全devise了我的区域的视觉瓷砖网格地图。 简而言之,我正在我的艺术软件屏幕上盯着我完全完成的区域,这是我创建arrays的视觉帮助。 我现在的策略是查看每个网格单元格,看看我放入的网格单元格,然后在数组中input其标识号码。 冲洗和重复数百次,看着每个单独的瓷砖,直到我手动完成arrays。 这是一个非常繁琐而漫长的过程。 我想要的:所以我的完整瓷砖地图已经在我的艺术软件。 我想要的是软件或多或less地为我生成arrays! 我按下一个button,它会看到每个网格广场上有什么图块,并相应地在文本文件中生成一个列表,并给出每个图块的识别号码。 这就是我所需要的。 然后,我可以将我的代码复制并粘贴到我的数组中。 它削减了大量的时间。 问题:请注意,我已经使用通用术语“艺术软件”。 有没有什么艺术软件可以做我所描述的? 是否有任何艺术软件(如Adobe Illustrator,Photoshop,GIMP等),如果有一个完整的瓷砖地图,将能够生成每个瓷砖的识别名称的文本文件列表?

有效的方法来呈现瓷砖

我已经建立了一个tilemap系统,并且以一种让我通过摄影机偏移来平移地图的方式。 但是,我发现这是非常低效的,但我不确定如何提高效率。 这是我目前的渲染代码: float lastCamOffSetX = -1, lastCamOffSetY = -1; public override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.Black); spriteBatch.Begin(); int count = 0; int startCol = (int)camOffsetX/world.TileWidth; int startRow = (int)camOffsetY/world.TileHeight; int endCol = (int)(startCol + viewPortWidth – (camOffsetX/world.TileWidth)); int endRow = (int)(startRow + viewPortHeight – (camOffsetY/world.TileHeight)); if (startCol < 0) startCol = 0; if (startRow […]

计算球体上的光线投射点的纬度和经度

我正在做一个游戏,你看一个球体,并获得位置的经纬度。 我沿着用户正在寻找的方向通过光线投射来获得地球上的位置。 使用这个我将位置和半径传递给一个方法来获得正确的经度和纬度。 问题 我不相信我的math在这个问题上是正确的,我有一些麻烦找出来。 码 void Update () { if (Physics.Raycast(transform.position, direction: transform.forward, hitInfo: out hit, maxDistance: range)) { Vector3 pointHit = hit.point; radius = earth.GetComponent<SphereCollider>().radius; //radius = earth.GetComponentInChildren<Renderer>().bounds.extents.magnitude; FromVector3(pointHit, radius); } } public void FromVector3(Vector3 position, float sphereRadius) { float lat = (float)(Math.Acos(position.y / sphereRadius)); float lon = (float)Math.Atan(position.x / position.z); //convert from […]

根据文本文件连接磁贴以制作大图像

如果我从文本文件构建我的关卡 0,0,0,0,0 0,1,0,1,0 0,2,1,0,0 0,0,0,0,0 我想画一个大的图像,我该怎么做呢? 我是否需要将图像分成多个图像(与其他图像大小相同),然后为每个图像添加一个值 0,1,2,3,4,5,6 0,7,8,9,10,11,12 还是有另一种方法来做到这一点? 比方说,我想添加一个房子,或者像这样的船?

在非平铺地图中表示/存储不同区域的方法

我正在开发一个代理部落互相争夺土地的游戏。地图是2D地图。每个代理都有一个代表他们家庭的组对象实例。每个组对象都包含有关部落的信息。 现在的问题是如何存储和代表每个部落拥有的区域。我正在考虑沿着土地分割成自己的土地瓦片,然后有代表区域(宽度,高度)的维度的ArrayList的东西,并存储位置旁边,以了解该地区从哪里开始..现在部落聚集所拥有的土地如下: 如果代理人所在的当前广场是免费的,则占用该土地 如果没有,那么如果当前的方格被占用,则尝试将其从另一个代理组中去除 现在请注意,实际的代理人运动并不是基于瓦片,因此我不确定我的代表自己的有用地块的想法是否有利于此。 所以我正在寻求任何有类似问题的人的建议来处理或有好的想法,他们可以分享。 此外,我附上了一个形象,以更好地解释我的情况。 注意:不同颜色的矩形表示代理所有的区域,而不同颜色的圆形是代理本身。

帮助开发网格地图

我最近一直在和Tiled和Cocos2d一起工作,但是在理解Im假设如何做地图的时候遇到了一些问题。 平铺不是一个图像编辑器,所以我在GIMP创建我的瓷砖。 然而,我似乎不可能得到与Tiled相同的网格线,所以我不知道在将网格线放入网格之前将图像导入到Tiled中。 看到下面的图片。 Tiled和Gimp的网格线都设置为32px,但是两个程序之间的网格线并不相同 我怎样才能得到网格线匹配,以便我可以绘制的东西知道将需要多less瓷砖。 有没有更好的程序来创建瓷砖或其他方式来做到这一点?

完整的地图图像加载,与单个瓷砖加载

我想在java中制作一个等距游戏,就像很多策略游戏一样。 这个游戏加载地图的最佳方法是什么? 将整个地图加载一个单一的图像是更好的做法,还是最好为每个瓦片制作图像,并使用int数组渲染每个瓦片?