[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]


  • Страница 1 из 1
  • 1
Модератор форума: Spidy, blitz3d  
Форум мира Blitz3D » Язык Blitz3D » 2D программирование » Изометрия
Изометрия
VikhemДата: Четверг, 06.10.2011, 19:36 | Сообщение # 1
ламер
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Статус: Offline
Ищу способы как реализовать движение юнитов, техники, при помощи спрайтов для ртс в блитц 3д...

у кого нибудь есть примеры, или полезные ссылки??

Добавлено (06.10.2011, 19:26)
---------------------------------------------
Вообщем у меня получилось реализовать движение и замену кадров, получилось оригинально, юнит ездит... но вот проблема.. по законам изометрии ширина ромба (в данном случаи моего) в 2 раза больше вертикали (речь идет от плоскости).. то есть 1 к 2. это должно соответствовать скорости пропорционально направлению... только как реализовать формулу скорости в языке, я не знаю.. иначе танк ездит криво, его уносит немного наверх...

Добавлено (06.10.2011, 19:36)
---------------------------------------------
то есть если все сделать правильно, танк будет двигаться в направлении 1 первой линии, параллельно своему направлению на картинке. но сейчас движется в направлении второй.

 
MishanayCoolДата: Пятница, 07.10.2011, 09:14 | Сообщение # 2
разработчик
Группа: Пользователи
Сообщений: 226
Награды: 11
Репутация: 20
Статус: Offline
А где ты изображения этих спрайтов взял?
Полагаю берёшь 3D модель крутишь её и снимаешь копию каждого кадра или нет.
Если да, то почему сразу в 3D не делать? Ведь в 3D плавный поворот и движение в нужном направлении без проблем реализовать и без всяких мудрых формул.
Некоторых игроделов похоже одолевает ностальгия по ZX Spectrum и приставкам Dendy.
Ну, хозяин барин, дело ваше.

Это думаю тебе пригодиться, наверно.
Code
Global LoadPathMouse=0,radius,begin_X,begin_Y,end_X,end_Y,cos_x#,sin_x#,angle#,speed#

AppTitle"Degrees 2D - PointToPoint"
Graphics 640,480,0,2
SetBuffer BackBuffer()                 

x1=10
y1=10

x2=500
y2=200
speed#=1
InitPathMouse()
While Not KeyHit(1)                 
Cls
result=PathPointToPoint(x1,y1,x2,y2,speed#)
;x1,y1 - координаты первого квадрата
;x2,y2 - координаты второго квадрата к которому движется первый квадрат
;speed# - скорость движения квадрата
;0 - стоит на месте
;1... чем больше число тем больше скорость если квадраты сошлись функция возвращает 1¸ иначе 0
If result=1 Then InitPathMouse():x1=Rnd(10,530):y1=Rnd(10,470):speed#=Rnd(1,5)

Text 10,10,result
Flip
Delay(2)
Wend

Function InitPathMouse()
LoadPathMouse=0
End Function
Function PathPointToPoint(begin_X,begin_Y,end_X,end_Y,speed#)
If LoadPathMouse=0 Then
radius=0
angle#=ATan2(end_Y-begin_Y,end_X-begin_X)
LoadPathMouse=1
EndIf

cos_x#=radius*Cos(angle#)*speed#
sin_x#=radius*Sin(angle#)*speed#
Rect begin_X-5+cos_x#,begin_Y-5+sin_x#,10,10,1
radius=radius+1

Color 255,255,255
Rect end_X-5,end_Y-5,10,10,1

If (begin_X+cos_x#-(speed#+1))<end_X And (begin_X+cos_x#+(speed#+1))>end_X Then
If (begin_Y+sin_x#-(speed#+1))<end_Y And (begin_Y+sin_x#+(speed#+1))>end_Y Then
Color 255,0,0:Rect end_X-5,end_Y-5,10,10,1:Color 255,255,255
Delay(10)
Return 1
EndIf
EndIf

Return 0
End Function


Ну и тут посмотри, может пригодится, хотя уже наверно видел.
Тайлы и изометрия - код в BlitzMax'е, но переделать под blitz3D не сложно.
Ещё тут Каталог:Blitz3D-Программы
С Векторами погугли.


MiniDemo3D - Blitz3D

Сообщение отредактировал MishanayCool - Пятница, 07.10.2011, 09:53
 
VikhemДата: Пятница, 07.10.2011, 10:38 | Сообщение # 3
ламер
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Статус: Offline
Спасибо за пример, классно кодишь, смотрел твои мини проекты)) попробую разобраться, но он сложный как для меня )
по ссылки изометрии был, а вот остальное посмотрю...
С волком спрайты не мои, я их не использую, просто выкинул пример.
Спрайты танка мои, но мне нравится 2д из за оптимизации, то есть картинка не требует высоких поддержек видюхи, и при этом симпатичная графика, что нарисовал то и будет на экране до программирования

если засунуть в 3д режим блитца тот танк, то впечатление что он состоит из 300 полигонов.
В 2д можно с легкостью стилизовать внешне игру, это важно не для обертки, а дополнительной передачи атмосферы игры... возможно любитель Spectrum'a, но мне не нравятся 3д стратегии в духе 2.5д.
3д и 2.5д разные миры с разным отображением, их сравнять не могу =) с тобой согласен, 2д очень сложная штука в программировании.


Сообщение отредактировал Vikhem - Пятница, 07.10.2011, 13:12
 
Форум мира Blitz3D » Язык Blitz3D » 2D программирование » Изометрия
  • Страница 1 из 1
  • 1
Поиск: