问题标签 [tiles-game]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1435 浏览

c# - 在 Unity3d 中将 2d 放置在网格上

我在 XNA 中为我的游戏构建了一个小型 MapEditor。现在我想在 Unity3d 中构建它,但我不太了解它在 Unity3d 中是如何工作的。

所以基本上我想要的是创建一个 2d 网格,我可以在其中动态地将图块添加到网格中。每个图块都包含一个 2d 纹理。

我正在考虑使用 NGUI 来帮助我解决这个问题。我希望它是一个 2d 游戏。

我不知道这在 Unity3d 中是如何工作的。如果你们能指出我正确的方向,我将不胜感激。

提前致谢!

0 投票
1 回答
1195 浏览

c# - 等距,仅在屏幕图块上绘制

我只需要在屏幕上绘制图块以提高性能。什么是可行的方法来做到这一点?

我尝试了这个让我接近但最终我似乎无法解决的错误。

在这里,我尝试逐行绘制我的 tilemap。首先我找出要绘制的第一个图块是什么(左上角),然后我找出需要绘制多少列和多少行。

起初我只使用浮点数并在最后一刻强制结束,同时将浮点数逐步转换为 int 我能够在屏幕上获得完整的 X=0 和完整的 Y=0 行,但其余的仍然显示作为这张照片。

等距显示问题

移动相机时,显示/渲染的瓷砖在不均匀和均匀之间切换,所以如果我突然向下移动少量,图片中显示的所有瓷砖都会消失并显示空白。进一步移动它会反转,如果我继续移动它会在这两种状态之间闪烁。我认为它与 (row/2) 有关,但我似乎无法修复它。

我计算要绘制哪些瓷砖的方式似乎很好。当我缩小时我得到了这个(缩放还没有改变公式)。在下图中,您可以看到第二个状态以及绘制其他图块的位置。

在此处输入图像描述

0 投票
2 回答
810 浏览

javascript - 一维或二维数组中基于平铺的寻路

据我所知,所有基于图块的地图编辑器都会导出一个包含一维数组的 JSON 对象。虽然大多数寻路库/教程仅提供给二维数组。

另外,例如,如果我想在这个一维数组中进行寻路并且这个数组很大,我猜这会导致性能问题。

那么为什么大多数基于图块的地图编辑器输出一维,我应该如何处理那些关于寻路的问题?

示例磁贴编辑器

只需google寻路即可找到所有二维寻路教程

0 投票
1 回答
182 浏览

actionscript-3 - 多层次

我正在阅读有关创建多个级别的教程,以下内容对我应该如何去做真的很感兴趣。

每个级别创建一个类似乎很自然,每个类都扩展了 AvoiderGame,并使用事件在它们之间切换。因此,我们可能有名为 AvoiderGameLevelOne、AvoiderGameLevelTwo 等的类,并让每个类在适当的时候触发“NavigationEvent.NEXT_LEVEL”。大概然后文档类会监听这个事件,当它听到它时,它会运行“playScreen = new AvoiderGameLevelTwo()”(或任何适当的级别),并将分数和时间等所有信息传递给这个新的播放屏幕实例。

我不完全确定如何去做。我把我的舞台,这是一个名为 level1、level2 等的类中的一组图块,并让它扩展了我的主类。为了检查一切是否正常,我在我的 main 中添加了一个名为 levelArray 的公共静态 var,它是一个空白数组。然后在 level1 中,我将数组推入 levelArray。

所以对于我的一级课

似乎没有工作。levelArray 显示为空白。可能是因为这两个类没有正确地相互通信?如果我以正确的方式接近这个有什么想法吗?

0 投票
1 回答
706 浏览

actionscript-3 - 从数组中添加敌人

我有一个 Enemy 类(它包含所有作为敌人的影片剪辑)、一个 Level 类(它在一个数组中列出关卡的布局)和我的 Main 文档类(它在图块中生成关卡的布局)。我的目标是每个级别都有不同的敌人。

敌人等级:

等级等级:

主类:

也许我正在以错误的方式进行整个设置,但我觉得有一种更简单的方法来完成我正在做的事情。所以我有2个问题。首先,如何从enemyArray 中添加两个敌人?其次,敌人现在出现在图块下方,可能是因为主类是生成图块的类。有什么办法可以让敌人被添加到主类中?

0 投票
1 回答
602 浏览

c# - 如何在不杀死FPS的情况下绘制数千个瓷砖

我到处寻找解决这个问题的方法(我可能只是盲目地看到周围的解决方案)。我的游戏目前在屏幕上渲染瓷砖地图,并且不会渲染实际上不在屏幕范围内的瓷砖。但是,每个图块都是 16x16 像素,这意味着如果屏幕上的每个像素都包含一个分辨率为 1920x1080 的图块,则要绘制 8100 个图块。

每个周期绘制那么多图块真的会杀死我的 FPS。如果我运行 800x600 分辨率,我的 FPS 会达到 ~20,而在 1920x1080 时,它的运行速度约为 3-5 FPS。这真的让我抓狂。

我尝试过线程化和使用异步任务,但那些只是闪烁屏幕。可能只是我编码不正确。

这是我目前使用的绘图代码。

有 8 到 12 个部分。每个图块由二维数组中的 char 对象表示。

画块方法:

Index() 方法只返回对应于 char 的图块的帧索引。

我想知道如何才能真正允许一次绘制这么多而不以这种方式杀死帧速率。我提供的代码显然不是很优化,还是我应该做一些特定的事情才能在不降低性能的情况下绘制这么多单独的图块?

0 投票
2 回答
114 浏览

java - 循环对象时遇到空指针数组。我怎么抓住它?

循环遍历数组时遇到空指针。有没有我可以运行的测试来找出可能导致此错误的原因......也许为什么应该有没有价值?系统在 mapTiles[0][33] 处停止。这是代码:

}

0 投票
2 回答
418 浏览

c# - 使用 DrawImage 函数没有得到准确的结果

好的,所以我有一个包含我的图块集的图像。然后我将我的 PictureBox 用作我的“游戏屏幕”。代码所做的只是获取我的瓦片集(瓦片)的片段并将其放置在游戏屏幕上。

这是我的代码。

这是我的输出:http://tm14.net/pokestory/mapeditor_test.png

为什么每个“瓷砖”之间的空间存在(这是一个 2 像素的间隙)?我可以使用 ghetto rig 代码,但我计划使用代数以编程方式找出瓷砖需要去的地方等等,所以 ghetto rig 可以工作,但在整个游戏中这样做会很麻烦,至少,草率。

0 投票
2 回答
213 浏览

actionscript-3 - 如何计算 tilemap 块的主索引?

我有一个 2D tilemap,它以块的形式生成,每个块由 2x2 单元组成。我可以引用块本身并获取块中每个特定单元格的索引。但是,我还想将第一个图块的索引存储在该块中,这不是自动生成的。

在此处输入图像描述

例如,点击突出显示的块总是会产生“0”,点击下一个块会产生“2”,点击它下面的块总是会产生“20”。红色数字表示图块/单元格的索引。黄色轮廓展示了一个实际的块。

在块的范围内,获得 0、2、4、6、8、20 等的最佳方法是什么?生成它的代码在 Actionscript 3 中,是一个基本的双 for 循环。

编辑:

我想了一会儿,决定添加我的索引搜索代码。我不完全确定这是否会有所帮助,特别是因为它用于查找单个单元格索引而不是块中的特定索引位置。

注意:它是为实际地图格式化的,宽度为 20,而不是示例中的 10。

0 投票
1 回答
1342 浏览

javascript - 如何在具有悬停效果的传单地图中添加方形瓷砖?

我想将我的地图分成瓷砖/领土。所以我准备了另一层显示正方形。但是这一层充满了 .png 图像文件,所以这个方块没有数据/对象。

我还尝试使用传单的几何对象绘制正方形。但它会导致性能问题,有时会显示 500 多个方块。

如果您开发类似的东西,您更喜欢哪种方法?UTFGrid?GeoJSON/几何?或者也许还有其他更好的解决方案?

更新:

实际上我不想让数据属于正方形的领土我只是想以某种方式改变正方形的颜色我的意思是我想以某种方式突出显示该区域也许我可以在用户鼠标悬停时动态创建一个矩形。

我试图避免使用 UTFGrid 来突出显示。但我想确保 UTFGrid 是唯一的方法。