[1.7.10] Лазер

svk

1,185
3
Добрый день, немного поразмыслив, я вообще не догадываюсь как его сделать.
Надо сделать сплошной лазер, сплошную линию от А до Б. Что-бы сделать лазерное оружие, надо выпускать энтити, и в месте его смерте будет точка Б, а точка А - игрок. Исходя из расстояния, надо расширить что-то, предварительно разместив его в центре...
Так вот, я так понял, надо отрендерить куб?
- Энтити по стандарту у меня и так куб, я так и не понял почему.
- Мне надо создать новый файл рендера? Что там писать что-бы был куб? Возможно-ли использовать не куб, а сферу?
- Как задать правильный наклон кубу? Ведь от А до Б идёт различие по всем 3 осям.
 
По-моему дефолтными средствами гл можно рисовать линии (во флансе дебаг так работает)
 
Dovakin написал(а):
По-моему дефолтными средствами гл можно рисовать линии (во флансе дебаг так работает)
В смысле, дебаг? Может я смог-бы там посмотреть, но не понимаю о чём ты.
 
Как я понимаю в индастриал крафте есть лазер,может оттуда взять?
 
Ой, да опенгловские линии - это именно инструмент дебага. Глупо пытаться с их помощью лазер рисовать.

По стандарту рисуется куб поотму что ты не зарегистрировал рендер. У тебя куча примеров рендера сущностей. Для начала можно взять, например, стрелу.
 
Нет, конечно с моими знаниями и кубический сойдёт, но хотелось-бы нормальный лазер, кругленький что-ли... Есть идеи?
 
Ну я бы рисовал повернутый к камере светящийся прямоугольник, "закрепленный" в двух местах - в начальной и в конечной точке. Я сейчас подобное решение использую для отрисовки пуль, с лазерами тоже наверняка прокатит.
h_1428944699_7422496_6b9210c957.png
 
GloomyFolken написал(а):
Ну я бы рисовал повернутый к камере светящийся прямоугольник, "закрепленный" в двух местах - в начальной и в конечной точке. Я сейчас подобное решение использую для отрисовки пуль, с лазерами тоже наверняка прокатит.
h_1428944699_7422496_6b9210c957.png
Я те в лоб, а ты мне по лбу.
Я и спрашиваю, как нарисовать этот прямоугольник, а уж "закрепить в 2 местах" тем-более не знаю.
Может есть какой-то способ, который рендерит прямоуголник, 2 точки которых и есть это А и Б. 
Видел я, как делают такой прямоуголник, и там какие-то кружечки есть, которые, когда их вертишь, поворачивают модель, это оно? Они могут расширять модель?
 
тебе надо что то вроде автонавидения на цель?Как в нодусе?
 
Какая модель? Какие кубики? Какие кружочки? Зачем здесь это всё? Нарисовать прямоугольник очень просто.
Tessellator t = Tessellator.instance();
t.startDrawingQuads();
t.addVertexWithUV(x, y, z, u, v);
//еще три вершины
t.draw();

Сложный вопрос - это что ставить на место x, y и z, тут уже нужна математика. В качестве одного из примеров я предлагаю тебе посмотреть рендер стрелы, там ничего особо страшного.
 
GloomyFolken написал(а):
Какая модель? Какие кубики? Какие кружочки? Зачем здесь это всё? Нарисовать прямоугольник очень просто.
Tessellator t = Tessellator.instance();
t.startDrawingQuads();
t.addVertexWithUV(x, y, z, u, v);
//еще три вершины
t.draw();

Сложный вопрос - это что ставить на место x, y и z, тут уже нужна математика. В качестве одного из примеров я предлагаю тебе посмотреть рендер стрелы, там ничего особо страшного.
Да, но надо растягивать, а если растягивать без поворота, то выйдет так, что модель увеличится, а не растянется по одной из осей модели.
[merge_posts_bbcode]Добавлено: 13.04.2015 20:29:14[/merge_posts_bbcode]

Нет не "Аааа"...
 
Ребят,отойду от темы задам вопрос. Как нарисовать линию типа веревки из ropes+. В ванили ещё есть похожая штука
P.S. svk,тебе это может пригодиться
 
Какая модель? Все так хочется модель использовать? Ну ничего не мешает. Поворачиваешь как надо (в третий раз говорю, загляни в рендер стрелы!), а потом GL11.glScale(1, дофига, 1) (или вдоль какой оси у тебя модель надо будет растягивать).
 
Dovakin написал(а):
А как поводок рендериться?
Ну в двух предложениях не объяснить. Просто рисуется два многоугольника, а координаты вершин динамически высчитываются по нехитрым формулам, понятным только их автору. Вот код отрисовки одного их двух этих многоугольников.

Код:
            t.startDrawing(GL11.GL_TRIANGLE_STRIP);

            for (i = 0; i <= 24; ++i) {
                if (i % 2 == 0) {
                    t.setColorRGBA_F(0.5F, 0.4F, 0.3F, 1.0F);
                } else {
                    t.setColorRGBA_F(0.35F, 0.28F, 0.21000001F, 1.0F);
                }

                f2 = (float) i / 24.0F;
                t.addVertex(endX + xDistance * f2, 
                        endY + yDistance * (f2 * f2 + f2) * 0.5D + ((24.0F - i) / 18.0F + 0.125F) + 0.025D, 
                        endZ + zDistance * f2);
                t.addVertex(endX + xDistance * f2 + 0.025D, 
                        endY + yDistance * (f2 * f2 + f2) * 0.5D + ((24.0F - i) / 18.0F + 0.125F), 
                        endZ + zDistance * f2 + 0.025D);
            }

            t.draw();
 
Назад
Сверху