【问题标题】:JMonkey Selection Square ComplicationJMonkey 选择平方并发症
【发布时间】:2014-02-06 06:27:06
【问题描述】:

我创建了一种在单击并拖动鼠标时在屏幕上绘制选择框的方法。就像在大多数策略游戏中一样。当鼠标被按下时,我调用了创建四边形网格并将其添加到 guiNode 的绘制方法。 (平屏)。

当鼠标仍然按下时,会调用以下更新方法:

    Main.gui.getChild("Selection Box").removeFromParent();
    xMouseCur = inputManager.getCursorPosition().x;
    yMouseCur = inputManager.getCursorPosition().y;

    if (xMouseCur < xMouse) {
    }

    quad = new Quad(xMouseCur - xMouse, yMouseCur - yMouse, false);

    geom = new Geometry("Selection Box", quad);
    geom.setLocalTranslation(new Vector3f(xMouse, yMouse, 0));
    geom.setMaterial(mat1);
    geom.setCullHint(CullHint.Never);
    Main.gui.attachChild(geom);

该方法根据鼠标的第一次点击位置和鼠标的当前位置创建一个新的Quad。现在的问题是,当我尝试单击并向左拖动时,正方形不显示。但是,当我向右拖动时,它确实如此。

我的假设是,当它在左侧时,创建新 Quad 时的宽度参数是负数,这会导致 Quad 类出现问题。但我不确定。我该如何解决这个问题?旋转四边形?有其他选择吗?

非常感谢

【问题讨论】:

    标签: camera jmonkeyengine


    【解决方案1】:

    您的问题是背面剔除。 当四边形的宽度(或高度)为负时,您将看到 tyhe 对象的背面,默认为 PER-TRIANGLE。 geom.setCullHint 用于平截头体剔除(当相机不看你时绘制),gui 节点不会担心。

    要么强制四边形为正尺寸: 适当设置每一帧的位置和大小。

    或使用mat1.getAdditionalRenderState().setFaceCullMode(FaceCullMode.Off) 告诉材质绘制背面。但它会一直绘制两边,这会加剧每帧使用新几何体的垃圾收集。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 2011-07-09
      相关资源
      最近更新 更多