JMonkey Selection Square Complication

Създадох начин за рисуване на поле за избор на екрана, когато щракнете и плъзнете мишката. Както в повечето стратегически игри. Когато мишката е натисната, извиквам моя метод за рисуване, който създава квадратна мрежа и я добавя към 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. Но не съм сигурен. Как мога да поправя това? Завъртане на Quad? Някакви алтернативи?

Благодаря ти много


person Community    schedule 06.02.2014    source източник


Отговори (1)


Вашият проблем е BackFace Culling. когато ширината (или височината) на Quad е отрицателна, вие ще виждате задната страна на обекта, който е избран по подразбиране НА ТРИЪГЪЛНИК. Geom.setCullHint е за премахване на фруструм (рисуване, когато камерата не ви гледа), нещо, за което възелът на gui няма да се тревожи.

Или принудете четворката да бъде с положителен размер: Задаване на позицията и размера по подходящ начин на всеки кадър.

Или използвайте mat1.getAdditionalRenderState().setFaceCullMode(FaceCullMode.Off), за да кажете на материала да нарисува задната страна. Все пак ще рисува и двете страни през цялото време, което би влошило събирането на боклука от използването на нова геометрия на всеки кадър.

person Canis Artorus    schedule 07.03.2014