问题标签 [2.5d]

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 回答
52 浏览

java - 远处 Java 的变暗精灵

我编写了一个功能齐全的第一人称射击游戏(2.5D 风格),但我希望精灵在远离相机的地方变暗(平方反比函数)。

我已经把数学记下来了,但是没有使用 BufferedImages 的经验,我不知道如何降低像素值(使用 alpha)或简单地将它们染成黑色。

注意:我也在使用 Graphics2D 缓冲到画布(图像)

所有的见解都值得赞赏。

0 投票
0 回答
617 浏览

three.js - 任何支持 Ie8 的 2.5D 或 3D Canvas 渲染引擎

我一直在寻找任何可以在 Ie8 中使用 [excanvas] 或类似 polyfill 的 2.5D 或 3D Canvas 渲染 JavaScript 引擎。我还尝试调整threejs 以支持Ie8,但在某个点上卡住了,似乎没有解决方案。

现在我在看phoria.js

这似乎很有希望,但没有太多可用的文档,对于像我这样的新手来说,很难开始。

任何链接将不胜感激。

注意:我尝试了一些其他库和示例,其中大多数都不是为了支持 Ie8 标准而编写的。

0 投票
2 回答
1209 浏览

3d - kivy 2.5d 场景 - 带有绘图/uix api 的图形 api

我知道 Kivy 公开了它的 OpenGL 上下文和它的一些原始接口。如果你直接篡改OpenGL,或者使用像kivy.graphics.trasformation这样的低级模块,这会对更高级别的小部件产生什么影响(通常)?是否一切都无缝协作,或者低级别的 openGL 函数是否有破坏布局或使小部件出现错误的习惯?

小部件在实现中是完全 3D 的吗?虽然他们的界面是针对 2D 的?我是否应该使用 python 扁平化我的 3D 模拟,并远离低级 api?

我还不足以从网格构建完整的 3D 对象,但如果有一些简单的硬件加速转换和纹理操作/混合/投影,那就太好了。


  • 我可以使用这个Renderer模板扩展大多数内置小部件吗?GitHub
  • 渲染器的多个实例会并行工作吗?(假设内置插件可以正常工作)
    • 嵌套?(可能不是,如果是,则有限)

我希望在混合高级和低级 api 时给出一系列警告的答案,或者在设计时考虑到 2.5D 的现有项目框架(我见过的大多数项目都非常重视 3D 对象生成)。


项目说明

我想设置一个显示为多个分层 2D 平面(使用 sprites/drawingAPI/Widgets)的场景,但在技术上是在 3D 场景之后建模的。场景深度不需要完整的 3D 支持,但可以受益于 3D 相机平移/旋转。

我想为小部件和绘图 API 使用高级 Kivy。现在绘制顺序和缩放应该给我的场景我想要的深度。但我不确定如何获得某些缩放/平移效果。

我希望使用garden.particlesystem(据我了解,设计为平面 2D 小部件)。我计划堆叠 3 个实例,最终创建一个流体管道模拟。在第一个版本中,我不需要先进行繁重的 3D->2D 投影,但最终我可以看到它成为一个问题。

0 投票
3 回答
1099 浏览

unity3d - 如何跳入 2.5D 世界?

我对 Unity(以及一般的游戏开发)完全陌生。我遵循了伟大的简单教程Survival Shooter并且我有一个问题:在本教程中,我们为刚体的角色添加了 Y 约束位置,并将拖动值和角度拖动值设置为无限。既然这些设置阻止了角色移动到 Y 轴,我们如何让角色跳跃?

如果有人可以帮我解决这个问题,请...

非常感谢!

0 投票
0 回答
950 浏览

openlayers-3 - 如何在 openalyers 3 上使用 2.5D?

我想在使用 OpenLayers 3 创建的地图上启用 2.5D(而不是 3D)。每个图块都由 Geoserver 提供。

使用此地图的网络应用程序非常具体,并且在 Firefox 浏览器上运行。

我一直在互联网上搜索(我的旅程很长),我没有发现与此问题相关的任何内容。我什至找不到 OpenLayers 3 是否可行。

所以这是我的问题:是否有可能做这样的事情,如果可以,怎么做?

编辑:由于我们设备的硬件限制,我们不能使用 WebGL。

0 投票
1 回答
553 浏览

java - Java 图形批量渲染

概括:

基本上我希望能够根据它们的 Image/Batch/Sprite 渲染项目以加快我的游戏速度,但我还必须根据 y 位置对实体进行排序,以便它以正确的顺序绘制。

问题:

我怎么能在理论上做到这一点?(代码块很好,但推理更好,谢谢!)


完整情况:

我正在创建一个 2.5 D 横向滚动条,在其中我发现〜 500 fps 对于早期开发阶段(至少在我的垃圾计算机上)来说是不错的,但我希望它更高,因为我将添加更多方面稍后(进一步降低 fps),所以我现在想尽可能优化。

我想知道是否可以同时使用相同的图像文件渲染所有实体,以节省加载图像文件的时间。我遇到的困难是我不能只按图像文件对实体进行排序(或者至少不是我能想到的,这就是我要问的原因),因为我还需要从后到前渲染它们,因为它是 2.5 D 游戏。

现在我将图像存储在 HashMap 中,所以它并不完全糟糕,我只是想知道我可以改进什么。

编辑:还要注意我正在使用带有 Graphics 的 Jframe 和 Jpanel 类进行渲染

如果您不想要,您不需要发布代码块。我只是想要更多的理论推理。谢谢!

-科雷

0 投票
1 回答
135 浏览

java - 是否可以仅使用图形将纹理映射到类似于 OpenGL 的四边形?

我正在创建一个天际线游戏作为一个有趣的辅助项目,当我开始对建筑物的墙壁进行纹理处理时遇到了麻烦,我目前只是在该区域绘制一个多边形,但我想知道是否有纹理它的方法是这样的纹理:

正方形

可以这样渲染:

正方形映射到平行四边形

这是游戏的图像,我想要纹理的部分是建筑物的灰色墙壁。

游戏画面

我知道我可以通过创建一个单独的渲染系统来逐个像素地绘制它,但我试图避免这种情况。

我的具体问题是 Java 的 Graphics 中是否存在可以实现此目的的方法或类似的方法。

0 投票
1 回答
372 浏览

java - Java 游戏引擎:光线投射的墙壁是空心的、破碎的,看起来像粪便

在此处输入图像描述我正在尝试编写一个光线投射引擎。

我研究了http://www.instructables.com/id/Making-a-Basic-3D-Engine-in-Java/上的教程和http://lodev.org/cgtutor/raycasting上的 C++ 光线投射教程.html,经过几次尝试后,我将光线投射到正确的方向,因此得到了(半)工作输出。

我让墙壁出现在世界上,我在游戏中添加了运动,我能够四处走动。但是,无论我面对世界的哪个方向,墙壁(应该是立方体)都只显示立方体的两侧。因此,它不会显示一个实心立方体,而是从立方体实际上最靠近相机的一侧跳转,而是显示立方体的另一侧,这仅在我面向原点时发生(0,0 ) 我的地图存储在其中的 2d 数组。此错误如上图所示。

我认为这个错误是由于整数四舍五入和光线检测到的墙壁的位置被四舍五入造成的,但我似乎无法提出解决方案。我实际上为每个像素列投射了两条光线,一条用于检测垂直墙壁,一条用于检测水平墙壁。计算并比较每个的距离,然后绘制最短距离的墙。

我的问题是如何正确绘制墙壁

0 投票
1 回答
1101 浏览

unity3d - 如何制作伪3D或2.5D效果?

在使用 Unity 一年多来创建 3D 游戏后,我想做我的第一个伪 3D 或 2.5D 游戏(或其他任何名称)。我的意思是像 Clash of Clans 或 Boom Beach 这样的游戏,其中的对象是真正的 2D 图像渲染以提供 3D 感觉。因为我什至不知道那种游戏的正确词,所以很难开始。我能想到的是让相机旋转 (45, -45, 0) 以便它从右上角向下看地面,然后使用 Sprite Renderers 创建空的游戏对象并将它们的旋转设置为 (22.5, -45, 0) 让他们面对相机。我不知道这是否真的是这样做的,所以有人可以给我一个链接到一些整洁的教程或其他东西,因为我被卡住了。

0 投票
0 回答
64 浏览

java - Slick2D 中的 2.5D 平面由于某种原因是弯曲的

我很乐意承认这段代码很奇怪,而且是一种非常非正统的创建任何 2.5D 的方式,但是如果有人能看到发生了什么,我将不胜感激。

我的代码结果如图所示: 奇怪的曲面

我当然想要一个完全平坦的平面,但是我不确定它为什么会这样弯曲。如果有人有任何答案,代码如下所示:

公共静态int宽度= 640;公共静态int高度= 480;

这是我的第一篇文章,如果事情看起来有点混乱,很抱歉。我相信我最终会习惯的...