Изометрия
| |
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 |
|
| |
|