Questions tagged «java»

Java既是一种流行的面向对象的编程语言,又是运行时环境,它允许Java程序在大多数硬件和软件平台上保持不变地运行。

2
查找哪些瓷砖与一条线相交,而无需遍历所有瓷砖或跳过任何瓷砖
我已经盯着这个问题几天了。我整理了此图形以帮助我直观地看到问题:( 从图形中我们知道线与[1,1],[1,2],[2,2],[2,3]相交,以[ 3,3]) 我想沿着直线移动到每个网格空间,并检查网格空间的材质是否牢固。我觉得我已经知道所涉及的数学,但是我还不能将其组合在一起。我正在使用它来测试视线并在通过我的寻路算法找到路径后消除节点-我的代理无法看到实体块,因此它们无法通过实体,因此不会从路径中消除该节点,因为它需要导航一个角。 因此,我需要一种算法,该算法将沿着直线移动到它相交的每个网格空间。有任何想法吗? 我看了很多常见的算法,例如布雷森汉姆算法,以及沿着线以预定间隔步进的算法(不幸的是,如果它们与比步长小的楔形相交,则此方法会跳过这些图块)。 我现在用大量floor()和ceil()函数填充我的白板-但是它变得过于复杂,我担心它可能会导致速度变慢。

3
脚本应该与引擎的抽象交互吗?
我正在使用Java和Jython,经过一些研究,我发现让脚本直接访问引擎接口可能是一个错误,因为它将两者紧密结合在一起。 看起来大多数脚本都允许mods通过某种抽象来创建和管理实体。出于这些原因存在这些抽象,还是只是为非程序员提供了一种更直观的方式来修改游戏?
10 java  python  scripting 

3
两个定向包围盒(OBB)之间最快的3D碰撞检测
我在游戏中需要添加碰撞系统的时刻。我尝试了jBullet,尽管它确实起作用了,但这并不是我想要的。我只想要一种简单的方法来测试两个面向边界的框(OBB)树是否碰撞。 我本来是要用那棵树做碰撞的。制作一个AABB进行广相,然后通过测试,如果树中的每个OBB与另一棵树发生碰撞。 我确实在互联网上找到了一些东西,但是我无法完全理解它们。我要的是一个很好地解释3D OBB碰撞的网站或资源? 我了解到,GJK比SAT更快,它似乎能够告诉我这些盒子相互穿透的距离。我找到了一些GJK东西,但它们不是盒子。相反,事情变得更加复杂和混乱。 我只希望能够通过3个向量制作OBB:中心,大小和每个轴的旋转。然后能够测试与这些碰撞。预先感谢您发布的任何内容。

6
如何在基于数组的十六进制贴图上获取像素到十六进制的坐标?
我正在尝试使一个像素能够协调十六进制贴图的功能,但是我没有正确地获得数学运算,我尝试的所有内容似乎都有些偏离,并且我发现的示例均基于以圆心为中心的贴图。 “基于数组”是指十六进制的排序方式,请参见图片。 我得到的最准确的结果是使用以下代码,但是仍然不可用,并且值增加的越多越糟: public HexCell<T> coordsToHexCell(float x, float y){ final float size = this.size; // cell size float q = (float) ((1f/3f* Math.sqrt(3) * x - 1f/3f * y) / size); float r = 2f/3f * y / size; return getHexCell((int) r, (int) q); } 屏幕从左上角的0,0开始,每个单元格都知道其中心。 我需要的是一种将屏幕坐标转换为十六进制坐标的方法。我该怎么办?

1
如何反转背景像素的颜色
我正在使用Java和jMonkeyEngine编写游戏和地图编辑器。在地图编辑器中,我已通过线框球体完成了笔刷。我的问题是:我想使它在任何地方都可见,因此我想反转此笔刷“后面”的像素的颜色。我想用片段着色器(GLSL)来做,但是我不知道如何获得该像素的颜色。

5
为什么在Vector3s中不能使用运算符'> ='?
我正在尝试获得一个矩形,以便在我称为_positionA和的两个位置之间移动_positionB。两者都是类型Vector3。矩形移动得很好。但是,到达时_positionB它不会像应该的那样朝相反的方向移动。 我回到代码中看一看。我得出的结论是,随着对象的移动,if代码中的语句错过了rects位置等于的框架_positionB。如果rects的位置大于或等于, 我决定将代码修改为反向_positionB。我的代码不太长,因此我将在下面显示它: using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = false; public Vector2 speed = new Vector2(1f, 0f); private …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

1
如何在OpenGL中实现基于GPU的动态几何LOD?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 去年关闭。 我正在尝试实施LOD以提高游戏性能。我发现了一个很好的教程。 我想我理解的基本概念是:获取摄像机到对象的距离,检查正确的LOD级别,然后使用“适当数量的实例”渲染对象。 我该如何实施?提供的示例代码对我来说是个谜。 一些问题: 这是实现LOD的好方法吗? 有人可以向我详细解释一下,我如何实现它,以及查询等等。 我正在使用渲染所有对象 GL11.glDrawElements(GL11.GL_TRIANGLES, model.getRawModel().getVertexCount(), GL11.GL_UNSIGNED_INT, 0); 示例代码使用GL_POINTS。我也可以实现GL_TRIANGLES吗?
9 opengl  java 

1
在启动画面中加载广告?
我有一些广告需要很长时间才能加载。我不知道这有可能让他们负载,同时利用在启动画面。我看了这个答案: /programming/5133342/how-can-i-make-my-ads-appear-faster-in-my-android-app 答案是建议使用启动屏幕加载广告。如何确定何时加载广告以继续进行下一个活动?如果用户在飞行模式下会发生什么,会卡在启动画面中吗?我已经看到了admob添加侦听器,但这需要adview,但是我的adview在下一个活动中吗?我该如何解决这个问题? 另外,当我尝试执行此操作时: AdView.setAdListener(new AdListener() { // Implement AdListener }); 我得到: 不能从静态上下文引用非静态方法。问题是,我正在尝试查看何时完成下一个活动中的添加。

1
如何在LibGDX 3D中引发碰撞事件?
在下面的代码中,我举了一个我想做的事的例子。我有相机,当它碰到其中一个盒子时,我希望它停止移动,该怎么办? public class Main extends ApplicationAdapter { private final ModelBuilder builder = new ModelBuilder(); private final Environment environment = new Environment(); private ModelBatch modelBatch; private PerspectiveCamera camera; private Model model; private ArrayList<ModelInstance> instance = new ArrayList<ModelInstance>(); private FirstPersonCameraController controller; private BoundingBox[] boxBounds = new BoundingBox[1000]; private BoundingBox cameraBox = new …

1
3D相机旋转
拜托,请原谅我,但我需要帮助,而我在这个问题上已经停留了几个星期,我没有取得任何进展,无论我走到哪里,我都会看到一个不同的答案,我尝试的所有方法都无法正常工作。我已经有了足够的技巧和建议,现在我真的只需要一个人给我答案,我就可以从此倒退,因为我不明白这一点。 使该主题最令人困惑的是每个人使用一组不同的约定或规则的方式,他们的答案基于他们自己的约定而没有定义它们的含义。 因此,这是我根据似乎最常见和合乎逻辑的内容形成的一组约定: 轴的右手法则。 正Y向上,正Z朝向观看者,正X朝向右侧。 行主矩阵,发送到着色器时转置。 螺距:绕X轴旋转 偏航:绕y轴旋转 滚动:绕z轴旋转 轮换顺序:横摇,俯仰,偏航(这是正确的吗?有人可以对此进行检查吗?) 从轴的正端向下看,正旋转值会导致顺时针旋转。 沿所有轴旋转0的默认方向是向下指向负Y的向量。 ..鉴于这些约定(如果它们约定不对,请务必纠正我!),如何做: 写一个LookAt函数?(lookAt(矢量位置,矢量眼焦点,矢量向上)) 计算旋转矩阵。(旋转(x,y,z)) 至少在过去的3周内,我尝试自己回答了这两个问题,我至少重写了LookAt&Rotation Matrix函数30次,测试了数十种方法,并通读了我所见过的材料。数百个网站,阅读了许多回答的问题,复制了别人的代码,到目前为止,我所做的一切都没有奏效,所有事情都产生了错误的结果。其中一些产生了一些非常怪异的输出,甚至没有接近正确的旋转。 除昨晚外,我每天晚上都在为此工作,因为我对反复的失败感到非常沮丧,不得不停下来休息一下。 拜托,请告诉我正确的方法是什么,以便我可以逆向工作并弄清楚它是如何工作的,我只是没有得到正确的答案,这使我有些疯狂! 我正在用Java编写,但是我会接受用任何语言编写的代码,我的大多数3D渲染代码实际上都运行得非常出色,这只是我无法理解的数学。 更新:已解决 感谢您的帮助!现在,我有了一个我真正理解的可以正常工作的LookAt函数,而且我再也高兴不起来了(如果有人想问一下,请问)。 我确实曾尝试过根据俯仰/偏航/侧倾变量创建旋转矩阵,但它似乎还是失败了,但是我决定放弃尝试将euler角用于freelook相机,因为它似乎不适合用于角色,而不是我要创建一个四元数类,沿着这条路径走运可能会更好,否则,我将诉诸于使用螺距/偏航作为球面坐标,并依靠新的工作LookAt函数进行旋转。 如果还有其他人遇到类似的问题并想问我问题,请随时。 至少我不会再受困了,谢谢您的帮助!

3
如何将多个矩阵发送到顶点着色器?
我正在使用骨骼/蒙皮练习动画。我正在尝试为着色器每个顶点发送一个矩阵。我可以想到这两种方法。 方法一 这样的每个骨基质都有一个统一的手柄 u_Bone0 = GLES20.glGetUniformLocation(mProgram, "u_Bone[0]"); u_Bone1 = GLES20.glGetUniformLocation(mProgram, "u_Bone[1]"); 并在其中onDraw将它们每个发送到着色器: GLES20.glUniformMatrix4fv(u_Bone0, 1, false, matrix0, 0); 如果我有大量矩阵,显然这不是一个好方法。我的第二个想法我还没有尝试过,因为有很多代码可以重构 方法2 是用来glUniformMatrix4fv一次将它们全部发送出去(假设我有20个矩阵) GLES20.glUniformMatrix4fv(u_Bones, 20, false, matrices, 0); 哪里matrices是float[16 * 20]。但是,然后修改每个骨骼的矩阵变得有点乏味。例如,如果我想获得第3个矩阵,则需要 float[] _3rd = Arrays.copy(matrices, 3*16, 4*16); 而保存这些值可能会变得更加烦人。 我现在正在使用方法1,但看起来并不十分聪明... 将多个矩阵发送到OpenGL ES 2着色器的最佳方法是什么? LE:我正在使用Android,因此我正在寻找Java解决方案。

2
没有Java运行时相关性的情况下,如何分发桌面Java游戏?
是否有可能将Java应用程序转换为“开箱即用”运行的独立程序包?最终用户不需要安装任何Java JRE,安装程序也不必包含JRE并为该用户安装。 最终发行版应包含一个本机可执行文件(希望适用于Windows,Mac和Linux),以及常规数据文件和任何其他JAR(如果需要)。我不是在专门寻找“一个文件”解决方案-我实际上是希望数据文件不被混淆。 如何才能做到这一点?

2
通过LAN的​​Android实时多人游戏
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我已经为Android平台开发了几款游戏,现在计划创建自己的第一款多人游戏。我想到的基本上是一个2人游戏女巫,您可以通过本地连接/ WiFi用2个电话玩游戏。 两部电话都需要能够将3个整数值实时传递给另一部电话。到目前为止,我已经考虑过使用Socket,但是在我深入研究它之前,我想问一下是否有更好的方法? 谢谢!

2
估算GOAP系统中的成本
我目前正在用Java开发GOAP系统。有关GOAP的说明,请参见http://web.media.mit.edu/~jorkin/goap.html。本质上,它是使用A *绘制使世界状态发生变化的动作之间的关系。 为了给所有行动和目标提供公平的执行机会,我正在使用启发式函数来估算执行某项操作的成本。估算此成本以使其与所有其他成本可比的最佳方法是什么? 例如,估算逃避敌人和攻击敌人的成本-应该如何计算该成本是否具有可比性?
9 java  ai  path-finding 

3
有了彼此连接的房间列表,如何找到孤立的房间组?
我正在尝试创建一个小型的roguelike,并延伸到随机生成的房间和走廊。每个房间都是实例对象,并包含通过走廊连接的其他房间的数组列表。 我可以挑出未连接的房间,但是我怎么知道仅相互连接但不与大多数其他房间相连的房间呢? 为了更好地说明问题,这里是来自控制台的图像,处在一个陷井状态。房间5和6仅相互连接。我可以使用什么算法来检测?
9 java  algorithm 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.