/**
* @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);
...
Liahim написал(а):А в чём затык?
Чем оно от квадратного отличается?
Liahim написал(а):Всё равно не понял, в чём проблема.
Ну пихни туда несколько кнопок и расположи их по кругу.
Maxik001 написал(а):Liahim написал(а):Всё равно не понял, в чём проблема.
Ну пихни туда несколько кнопок и расположи их по кругу.
Я Liahim
"АА, ты что больной!!!11! какие круги в майнкрафт! Мои глаза, спасите, он делает что то круглое!!!!"
P.S без обид
Liahim написал(а):Всё равно не понял, в чём проблема.
Ну пихни туда несколько кнопок и расположи их по кругу.
Liahim написал(а):Ну так а я о чём говорю?
Обыкновенные кнопки... Ну, чуть сложнее рассчёт области.
Biter7789 написал(а):Мне нужно сделать гуи,как в моде mine menu,но оно там многоугольное,а мне нужно круглое
Biter7789 написал(а):как в моде mine menu
// Поля кнопки
// 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;
}
Ivasik написал(а):А теперь я рассказываю как такое сделать:
1.Берём тесселятор и цвет, делаем круг красим его в чёрный и добавляем прозрачность.
2.Создаём свою кнопку, по аналогии с первым пунктом, но только делаем типы(Enum) и добавляем туда UP, DOWN, LEFT, RIGHT и даём им параметры 0, 90, 180, 270. Первый тип кнопки(состояние простоя) без текстуры и цвета, но с рендером предмета(как рендерить предмет в чём угодно я не буду рассказывать, изи же), второе состояние(наведено) увеличиваем нашу кнопку скалой, и делаем ей цвет серый(чтобы выделялось). И в рендер кнопки добавляем свитч с ButtonEnumType и в кейсах вставляем UP, DOWN... Задаём в конструкторе параметры типа ButtonEnumType type в который мы будем указывать типы сторон, чтобы наша кнопка поворачивалась и вставала на своё место(не забываем создать переменную). И теперь добавляем код от @Dahaka, чтобы на кнопку можно было нажать.
3.Создаём своё кастомное меню или если хотим отображать не в блоке а где нибудь на экране во время бега, то в событии RenderGameOverlayEvent. Пихаем туда пункт 1 и пункт два.
4.???
5.Profit!
Ну вроде как то так Могу сегодня сделать и выложить код(если @Тимаха меня не опередит...)
Не опережу.Ivasik написал(а):если @Тимаха меня не опередит...
Ivasik написал(а):Немного доделать осталось, подредачу код и выложу на всеобщее обозрение.