Nano Hash - криптовалюты, майнинг, программирование

Оберните край мира с особой настройкой

я искал вокруг, чтобы найти лучший способ обернуть края мира для тел. Мне удалось использовать эту тему для этого: Как мне сделать обертка Box2D вокруг мира? Используя SetTransform(), я могу сделать так, чтобы он отображался на другой стороне X/Z.

Теперь допустим, у меня есть объект, например, простая коробка 10x10. Если половина поля выходит за верхний край Y, я хочу, чтобы часть, выходящая за его пределы, отображалась ниже, а другая часть поля, которая все еще видна в верхней части, оставалась там. Подводя итог, я хочу, чтобы «настоящая обертка вокруг края, как это делалось в старых играх. Надеюсь, я достаточно ясно выразилась…

Редактировать: я добавил изображение, чтобы объяснить, что я имею в виду: введите описание изображения здесь

Спасибо

19.05.2015

Ответы:


1

Я не использовал Box2d, но я решил эту проблему раньше в Processing, надеюсь, логика легко переводится

В Обработке прямоугольник рисуется как rect(x, y, rectangleWidth, rectangleHeight) в позиции x, y, которая представляет верхний левый угол прямоугольника. Ширина и высота прямоугольника указывают вправо и вниз от x и y соответственно.

Идея состоит в том, чтобы рисовать прямоугольник как обычно, если нижняя часть не находится за нижним краем области просмотра (поскольку высота прямоугольника указывает вниз на основе y). Если прямоугольник находится за нижним краем области просмотра, вместо этого вы рисуете два частичных прямоугольника.

В приведенном ниже коде height — это высота вашего окна просмотра.

if (y < height-10)
  rect(x, y, 10, 10); // Normal condition, entire rectangle
else {
  rect(x, 0, 10, 10-(height-y)); // Top partial rectangle
  rect(x, y, 10, height-y); // Bottom partial rectangle
}
19.05.2015
  • Простая и отличная идея. Но становится довольно сложно обрабатывать пользовательскую отрисовку для одного тела в Box2D. На самом деле кто-то указал мне на использование 2 корпусов box2d и управление отображением по-своему, что кажется лучше. 20.05.2015

  • 2

    Наконец, я немного погуглил, нашел эту статью о Unity:

    http://gamedevelopment.tutsplus.com/articles/create-an-asteroids-like-screen-wrapping-effect-with-unity--gamedev-15055

    В Box2D я создал 8 тел-призраков, которые были расположены, как указано в статье.

    Во время работы с Box2D я добавил некоторую логику, чтобы проверить, где находится мое исходное тело. Когда он подходит к краям, на другом краю появляется Тело Призрака. Это работает и тогда, когда исходное тело идет по кордеру. На каждом ребре появится по 4 призрачных тела.

    29.05.2015
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..