Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос World2Screen

null
Премиум
Премиум
Статус
Оффлайн
Регистрация
15 Май 2024
Сообщения
149
Реакции
14
Крч начал делать свой интернал чит на майн 1.21 фабрик ну чет делал все круто подключил менюшку на имгуи в моменте понял что мне нужны есп но сколько бы я не пытался написать свой World2Screen у меня есп протсо летали
Вопрос есть ли информация где то как правильно сделать или что то типо такого ну или же кто то знает как это правильно сделать ?
 
Проблема почти всегда связана с неправильным использованием матриц или порядка умножения в рендере. Часто проще не использовать worldToScreen, а рисовать прямо в 3D пространстве. Это решит проблему летания, тк координаты будут привязаны к миру, а не к экрану.

Вот концепт от меня:
public class PlayerESP {
public static void render(MatrixStack matrixStack, float tickDelta) {
MinecraftClient client = MinecraftClient.getInstance();
Camera camera = client.gameRenderer.getCamera();
Vec3d cameraPos = camera.getPos();
for (PlayerEntity player : client.world.getPlayers()) {
if (player == client.player) continue;
double x = player.prevX + (player.getX() - player.prevX) * tickDelta;
double y = player.prevY + (player.getY() - player.prevY) * tickDelta;
double z = player.prevZ + (player.getZ() - player.prevZ) * tickDelta;

double renderX = x - cameraPos.x;
double renderY = y - cameraPos.y;
double renderZ = z - cameraPos.z;

matrixStack.push();
matrixStack.translate(renderX, renderY, renderZ);

Здесть рисуешь есп

matrixStack.pop();
}
}
}

Если очень нужен именно WorldToScreen, тебе нужна проекция. В маппингах на 1.21: тебе нужно получить GameRenderer и Camera. Получить матрицу проекции и вида. Использовать метод camera.project.
Возможно у тебя это: ты берешь координаты игрока за прошлый тик (player.getX()), а камеру за текущий. Юз prevX + (getX() - prevX) * tickDelta.
А вообще, лучше найди опенсорс проект и скопируй
:LUL:
 
Назад
Сверху Снизу