Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   клеточный мир, где клетка - правильный шестиугольник (http://www.flasher.ru/forum/showthread.php?t=142135)

greegreeman 13.07.2010 17:17

клеточный мир, где клетка - правильный шестиугольник
 
Подскажите, пожалуйста, как разбить мир в игре на клетки, где каждая клетка - правильный шестиугольник?

Хемуль 13.07.2010 17:20

2 greegreeman:
Вопрос, который не даёт людям покоя после успеха Fallout... Разбить можно. Только врядли вам кто-то тут ответит, как именно. Вопрос из разряда "Как сделать 3D-игру".

greegreeman 13.07.2010 17:29

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

Хемуль 13.07.2010 17:31

2 greegreeman:
Как по мне, вам лучше тогда уж взглянуть в сторону каких-то физических движков. Если шарики - это у вас кружочки, то можете взглянуть на Box 2D.

greegreeman 13.07.2010 17:33

я с помощью него и сделал все ) но никак не могу добиться, чтобы шарики замирали в нужный момент без зазоров между ними. решил делать это сам. по своему алгоритму, т.к. с бокс2д этот момент не получился, а подсказать мне никто не смог. гуглил перегуглил все...

Добавлено через 2 минуты
у меня шарики с коэффициентом упругости. и они при столкновении отлететь успевают на некоторое расстояние друг от друга, и только потом замирают. я решил, раз иначе никак, то надо их руками сблизить уже после столкновения. для этого надо помещать их точно в центр шестиугольника, на который разбит весь мир... может и правда усложнил

Хемуль 13.07.2010 17:35

2 greegreeman:
Не можете добиться отсутствия зазоров из-за каких-то проблем с определением столкновений и реакцией на них в Box 2D, либо сами не можете правильно описать то, что хотите?

Tr1te 13.07.2010 17:41

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

А если не нужна упорядоченная структура. То проще проверять столкновение, посчитав расстояние между центрами окружностей, и если расстоение между ними меньше или равно сумме радиусов окружностей, то они столкнулись, и мы можите их останавливать/слеплять.

greegreeman 13.07.2010 17:44

замучался сам описывать. уверен, что в бокс2д это можно сделать без проблем. просто у меня не получается

Добавлено через 2 минуты
первый вариант. мне надо упорядоченное расположение шариков

Tr1te 13.07.2010 18:00

Ну если вам нужен клеточный мир, то это не проблема, вы же знаете относительные координаты каждой клетки. вот и центрируйте их. к этим координатам. Шарик отлетел, Потом смотришь ближайшую координату по умолчанию, и перемещаешь объект в эту координату.

greegreeman 13.07.2010 18:04

да. так я и решил сделать. но я не знаю как сделать клетки шестиугольными. с квадратоми проще.

-De- 13.07.2010 19:05

Поле под шестиугольники - это всё равно прямоугольный двумерный массив. Только клетка i,j ещё соединена с i+1,j+1 и i-1,j-1. Ну или i+1,j-1 и i-1,j+1 =)
Когда в башке это отложится, то легче дальше раскручивать, по-моему.

Zebestov 13.07.2010 20:57

шестигранный мир, это тот же прямоугольный мир, в котором каждый второй ряд смещен на половину ширины клетки, а расстояние между рядами равняется .866 ширины клетки.
другими словами хранить информацию можно по-прежнему в двумерном массиве, просто расстояния мерять с учетом вышесказанного.

greegreeman 14.07.2010 13:35

да. господа, вы правы. все оказалось не так и сложно ) всем спасибо большое


Часовой пояс GMT +4, время: 11:30.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.