forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Вопрос про пошаговость... (http://forum.boolean.name/showthread.php?t=16198)

Krep_Kospit 16.01.2012 11:22

Вопрос про пошаговость...
 
Добрый день.

Решил попробовать сделать простенькую пошаговую стратегию, приготовил модельки, камеру, движение, стрельбу и т.п., но никак не смог придумать алгоритм отображения на террайне гексагонов или квадратов, по которым могли бы перемещаться юниты. Полистал примеры и страницы - не отыскал.
Единственной идеей стало засеивание террайна Pivot'ами... Но это, скорее всего, не выход.
Прошу знатоков подсказать, с помощью чего делается требуемое, или же ткнуть, где лежит пример.

SBJoker 16.01.2012 12:33

Ответ: Вопрос про пошаговость...
 
обычно это делается текстурой с нарисованной сеткой, накладываемой вторым слоем.

З.Ы. недумали ник по-проще сделать?

Krep_Kospit 16.01.2012 13:12

Ответ: Вопрос про пошаговость...
 
Цитата:

Сообщение от SBJoker (Сообщение 216941)
обычно это делается текстурой с нарисованной сеткой, накладываемой вторым слоем.

З.Ы. недумали ник по-проще сделать?

Хм, про вторую текстуру я как-то не допетрил... Спасибо.

Тогда второй вопрос: положил вторую текстуру с квадратами, а теперь мне надо, чтобы юнит двигался только через стороны квадрата, а не пересекал их по кратчайшему расстоянию. Это делается по типу вейпоинтов? Или есть иные способы?

Ник, конечно же, надо другой :) Но, видимо, я настолько слоупок, что в личном кабинете не нашёл этой опции :(

Dream 16.01.2012 14:03

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

Krep_Kospit 16.01.2012 14:36

Ответ: Вопрос про пошаговость...
 
Цитата:

Сообщение от Dream (Сообщение 216943)
От центра одного квадрата до центра другого квадрата, который соседний с первым, полюбому путь будет проходить посредине через грань

так, уже яснее, спасибо :) Только непонятно пока, что может являться центром квадрата?

FireOwl 16.01.2012 15:12

Ответ: Вопрос про пошаговость...
 
Цитата:

Сообщение от [email protected] (Сообщение 216942)
Ник, конечно же, надо другой :) Но, видимо, я настолько слоупок, что в личном кабинете не нашёл этой опции :(

Запости сюда заявку: http://forum.boolean.name/showthread.php?t=4658&page=6


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

Krep_Kospit 16.01.2012 16:03

Ответ: Вопрос про пошаговость...
 
Цитата:

Сообщение от FireOwl (Сообщение 216948)
А зачем в игру, где все изначально создается не по сетке, вводить ее для персонажей?

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

Krep_Kospit 17.01.2012 15:18

Ответ: Вопрос про пошаговость...
 
Полистал темы в других редакторах, нашёл идею - создание плоскости и разбивка её на квадраты. Кто-нибудь может рассказать подробнее, какими командами производить разбивку и как располагать разбитую на квадраты плоскость на ландшафте?

Nex 17.01.2012 15:51

Ответ: Вопрос про пошаговость...
 
width - количество клеток в ширину
height - количество клеток в высоту (глубину).
Код:

Function CreatePlane2 (width=1,height=1)
        mesh = CreateMesh ()
                surface=CreateSurface (mesh)
                        For z=-width/2 To width/2
                                u#=z/Float (width)*20
                                For x=-height/2 To height/2
                                        v#=x/Float (height)*20
                                        vx=AddVertex (surface,x*2.0,0,z*2.0,u,v)
                                Next
                        Next

                        For z=0 To height-1
                        For x=0 To width-1
                                start = x+z*(width+1)
                                        v0=start
                                        v1=start+1
                                        v2=start+(width+1)
                                        v3=start+(width+1)+1
                                                  AddTriangle surface,v2,v1,v0
                                                  AddTriangle surface,v2,v3,v1
                        Next
                        Next
        Return mesh
End Function


DStalk 17.01.2012 16:05

Ответ: Вопрос про пошаговость...
 
Да в принципе пофиг на модельку поверхности и пофиг какими методами ее делать. Главное что юниты будут перемещатся по координатам (сетка квадратная, то есть X и Y) - тут все просто. А положение модельки юнита считаешь от масштаба, например если клетка размером 10х10, то значит реальные координаты юнита будут типа того:
Код:

x=unit\x*10+5
y=unit\y*10+5
PositionEntity unit\entity,x,0,y

Unit - это тип с информацией о юнитах, +5 для того чтобы юнит был всегда посередине клетки (если поле начинается с координат 0,0)

В данном случае модель террейна можно брать любую, а можно и вообще без нее))

Krep_Kospit 17.01.2012 19:25

Ответ: Вопрос про пошаговость...
 
Не понимаю :(

сделал так:

Код:

CreatePlane2#() ;то есть вызвал функцию

Global amount = 5
For i = 0 To amount
tank.tank_platform = New tank_platform
tank\tank_model = LoadAnimMesh("..\..\..\media\textures\123.fbx") ; создал танк

tank\tank_chassi = xFindChild(tank\tank_model, "platform001")
 
  rx=rx+40 ; размещаю его в мире
    x# = 10+rx
          z# = 50
        PositionEntity(tank\tank_model, x,90, 100)
        MoveEntity(tank\tank_model, 40, 0,0)

А как разместить/привязать его по/к сетке? перебирать вертексы и от них как-то отталкиваться?:crazy:
Делать EntityParent? Да вроде без толку... Поверхности доходят до меня медленнее, чем типы:SOS:

FireOwl 17.01.2012 19:33

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

Krep_Kospit 17.01.2012 20:18

Ответ: Вопрос про пошаговость...
 
Цитата:

Сообщение от FireOwl (Сообщение 217085)
А зачем его как-то по особому привязывать?
Танк размещен в координатах ячейки, все хорошо.
В любой момент можно по координатам танка вычислить и положение ячейки.

ага... то есть мы берём EntityX, У и Z танка, а потом VertexX или TriangleVertex? то есть через взятые точки треугольника мы вычисляем, что танк между ними и его уже окончательно позиционируем как надо?
Или я не так понял "вычислить и положение ячейки"?:dontknow:

FireOwl 17.01.2012 20:50

Ответ: Вопрос про пошаговость...
 
Задача - разместить юнитов по клеткам?

Можно представить, что существует некая сетка,
середина нулевой ячейки - в координатах (0,0), а далее каждая воображаемая ячея занимает приблизительно 10 на 10 едениц (в чем там пространство трехмерное меряют).

Есть танк. Его надо поставить в ячейку (4,-2). Например.
Берем и через PositionEntity ставим его в такие координаты:
(x*width; y*height), где width и height - ширина и высота клеток.
(4*10; -2*10)
т.е.
(40, -20)
Готово. Танк в ячейке.

Обратный процесс обратен.
Есть танк, который болтается в мировом пространстве по координатам (-100, 40), например.
Берем и вычисляем, что это за ячейка:
(x/width; y/height)
(-10, 4)

А террайн, вместе с приляпаной к нему текстурой сетки, служит задником для математики.
Чисто для красоты и удобства зрителей.
Зачем привязывать модели танков к модели террайна?

Krep_Kospit 17.01.2012 21:33

Ответ: Вопрос про пошаговость...
 
Спасибо большое! логика стала понятной:)


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot