Radial Menu

Версия Minecraft
1.7.10
Привет,как сделать круглое меню как на скринах?
Tool-Belt-Mod-3.jpg
Avatar-2-Out-Of-The-Iceberg-Mod-8.jpg
Ability-Wheel.png
 
Решение
Лойсы в студию!
[video=youtube]https://youtu.be/hLiAT9gN3GQ[/video]
Код:
/**
         *    @Author - Ivasik
         *    @link - http://forum.mcmodding.ru/Пользователь-Ivasik
         */
        GlStateManager.pushMatrix();
        GlStateManager.disableTexture2D();
        GlStateManager.color(0, 0, 0, 0.4F);
        GlStateManager.translate(this.width / 2 + 0.5, this.height / 2, 0);

        double a = Math.toDegrees(Math.atan2(mouseY - (height / 2), mouseX - (width / 2)));
        double d = Math.sqrt(Math.pow(mouseX - (width / 2), 2) + Math.pow(mouseY - (height / 2), 2));
        float s0 = ((-0.5F / 4.0F) + 0.5f) * 360;
        if (a < s0) a += 360;

        for(int i = 1; i < 5; i++)
        {
            GlStateManager.rotate(90, 0, 0, 1);
  ...
5,018
47
783
Liahim написал(а):
Всё равно не понял, в чём проблема.
Ну пихни туда несколько кнопок и расположи их по кругу.

Я Liahim
"АА, ты что больной!!!11! какие круги в майнкрафт! Мои глаза, спасите, он делает что то круглое!!!!" :)
P.S без обид  :)
 
Maxik001 написал(а):
Liahim написал(а):
Всё равно не понял, в чём проблема.
Ну пихни туда несколько кнопок и расположи их по кругу.

Я Liahim
"АА, ты что больной!!!11! какие круги в майнкрафт! Мои глаза, спасите, он делает что то круглое!!!!" :)
P.S без обид  :)

:D
 

timaxa007

Модератор
5,831
409
672
Biter7789, знать точно это? Я точно не знаю. Но нужно сделать подобие кнопок, но только они будут работать не прямоугольной области, а типа радиальной с определённом углом... Мне трудно объяснить.
 
3,005
192
592
Biter7789 написал(а):
Мне нужно сделать гуи,как в моде mine menu,но оно там многоугольное,а мне нужно круглое

Biter7789 написал(а):
как в моде mine menu

Ищешь мод, качаешь, декомпилируешь, получаешь код.
Копипастишь к себе.
Получаешь нужный тебе компонент. ВУАЛЯ
 
2,505
81
397
Не силен в тригонометрии, у себя делал так.
У меня были секторные кнопки, ограниченные двумя радиусами.
d94e49d4a789438f8d27be622cbca398.png


Узнать наведен ли курсор на кнопку можно примерно так:
Код:
// Поля кнопки
// x, y - центр
// r - большой радиус
// r1 - малый радиус
// angle, alpha углы
public boolean inBounds(int mouseX, int mouseY)
{
    double pU = r * Math.cos(Math.toRadians(-angle));
    double pV = r * Math.sin(Math.toRadians(-angle));
    double pX = mouseX - x;
    double pY = mouseY - y;

    double r3 = pU * pU + pV * pV;
    double r2 = pX * pX + pY * pY;
    boolean b = (pU * pX + pV * pY) / Math.sqrt(r3 * r2) >= Math.cos(Math.toRadians(alpha));
    return b && r2 <= r * r && r2 >= r1 * r1;
}
Нарисовать сектор, как квадратный кусок текстуры, не составит труда.
 

Icosider

Kotliner
Администратор
3,603
99
664
А теперь я рассказываю как такое сделать:
1.Берём тесселятор и цвет, делаем круг красим его в чёрный и добавляем прозрачность.
2.Создаём свою кнопку, по аналогии с первым пунктом, но только делаем типы(Enum) и добавляем туда UP, DOWN, LEFT, RIGHT и даём им параметры 0, 90, 180, 270. Первый тип кнопки(состояние простоя) без текстуры и цвета, но с рендером предмета(как рендерить предмет в чём угодно я не буду рассказывать, изи же), второе состояние(наведено) увеличиваем нашу кнопку скалой, и делаем ей цвет серый(чтобы выделялось). И в рендер кнопки добавляем свитч с ButtonEnumType и в кейсах вставляем UP, DOWN... Задаём в конструкторе параметры типа ButtonEnumType type в который мы будем указывать типы сторон, чтобы наша кнопка поворачивалась и вставала на своё место(не забываем создать переменную). И теперь добавляем код от @Dahaka, чтобы на кнопку можно было нажать.
3.Создаём своё кастомное меню или если хотим отображать не в блоке а где нибудь на экране во время бега, то в событии RenderGameOverlayEvent. Пихаем туда пункт 1 и пункт два.
4.???
5.Profit!

Ну вроде как то так:) Могу сегодня сделать и выложить код(если @Тимаха меня не опередит...)
 
Ivasik написал(а):
А теперь я рассказываю как такое сделать:
1.Берём тесселятор и цвет, делаем круг красим его в чёрный и добавляем прозрачность.
2.Создаём свою кнопку, по аналогии с первым пунктом, но только делаем типы(Enum) и добавляем туда UP, DOWN, LEFT, RIGHT и даём им параметры 0, 90, 180, 270. Первый тип кнопки(состояние простоя) без текстуры и цвета, но с рендером предмета(как рендерить предмет в чём угодно я не буду рассказывать, изи же), второе состояние(наведено) увеличиваем нашу кнопку скалой, и делаем ей цвет серый(чтобы выделялось). И в рендер кнопки добавляем свитч с ButtonEnumType и в кейсах вставляем UP, DOWN... Задаём в конструкторе параметры типа ButtonEnumType type в который мы будем указывать типы сторон, чтобы наша кнопка поворачивалась и вставала на своё место(не забываем создать переменную). И теперь добавляем код от @Dahaka, чтобы на кнопку можно было нажать.
3.Создаём своё кастомное меню или если хотим отображать не в блоке а где нибудь на экране во время бега, то в событии RenderGameOverlayEvent. Пихаем туда пункт 1 и пункт два.
4.???
5.Profit!

Ну вроде как то так:) Могу сегодня сделать и выложить код(если @Тимаха меня не опередит...)

Напиши пожалуйста.
 
Сверху