|
18.06.2012, 11:38
|
#151
|
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Не совсем понятен вопрос... а как тебе еще двигать если не по кругу ?
Вектора спасут оца русской демократии
|
|
|
18.06.2012, 11:52
|
#152
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Сообщение от Diablo1909
Не совсем понятен вопрос... а как тебе еще двигать если не по кругу ?
Вектора спасут оца русской демократии
|
Не, я не хочу быть отцом ру.демократии.
Надо прицепить партиклы к двигателю корабля. Двигатели находятся по бокам то есть просто по кругу не прокатит, надо как то еще и смещение по x/y высчитывать, но не выходит.
Хотя один человек с ГД.ру подсказал мне решение, но там как то много строк вышло хотя мне казалось что там все просто будет.
|
(Offline)
|
|
18.06.2012, 12:19
|
#153
|
Бывалый
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений (для 1,836 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Это не "И", это решение.
Твой вопрос непонятен.
Два варианта:
1) Корабль летает по кругу. Я нарисовал этот случай.
Вроде:
x,y // координаты центра его круговой траектории dx = ... // сдвиг двигателя относительно центра корабля r = ... // радиус его траектории for(a=0;a<x;a+=0.1){ ax = cos(a)*r; ay = sin(a)*r; mx = cos(a+PI/2)*dx; my = sin(a+PI/2)*dx; ship.draw(x+ax, y+ay) particle.add(x+mx+ax ,y+my+ay) }
2) Корабль летает сам по себе, направляемый вектором перемещения.
Тогда все вообще элементарно.
|
(Offline)
|
|
18.06.2012, 12:47
|
#154
|
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Так в чем вопрос то ?
Не можешь сдвинуть обьект вокруг другого ?
Кури тему про локальные системы координат обьекта, вектора и про систему родитель\ребенок.
|
|
|
18.06.2012, 18:40
|
#155
|
AnyKey`щик
Регистрация: 03.01.2012
Сообщений: 11
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
У меня вопрос:
Когда поворачиваешь объект только по горизонтали или по вертикали, всё норм.
Но когда повернёшь объект только по горизонтали и лишь потом по вертикали (ну или наоборот), второй поворот будет происходить немного в другую сторону от ожидаемого, ведь ось чуток сместилась.
Как сделать так, чтобы объект поворачивался в нужную сторону вне зависимости от того, куда он уже повёрнут?
|
(Offline)
|
|
18.06.2012, 19:59
|
#156
|
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
в 2D-графике нет поворотов по горизонтали\вертикали. здесь только одна ось.
|
|
|
18.06.2012, 20:47
|
#157
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
2) Корабль летает сам по себе, направляемый вектором перемещения.
Тогда все вообще элементарно.
|
Типа так только он (корабль) за мышкой летает. Не могу я в этом разобраться все таки.
|
(Offline)
|
|
22.06.2012, 14:52
|
#158
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Nex, вроде как FireOwl и Diablo1909 норм написали. Я своими словами допишу. У тебя есть корабль, у корабля есть центр, относительно которого он вращается при повороте. Тебе нужно определить dx dy смещения от центра вращения корабля до двигателей в неповёрнутом положении корабля. Зная их, сможешь найти угол наклона гипотенузы, эта гипотенуза и есть радиус вращения, её тоже найдёшь через дх ду. Получишь набор начальных углов и радиусов - от центра вращения корабля до двигателей. Далее при вращении корабля на такой же угол изменяешь значения начальных углов двигателей. Через углы и радиусы находишь смещения дх и ду - это локальные координаты двигателей относительно центра корабля. Потом при отрисовке прибавляешь к ним координаты центра корабля и получаешь глобальные обычные координаты рисования.
|
(Offline)
|
|
22.06.2012, 14:54
|
#159
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Для погони за мышкой нужно просто вращать корабль на небольшой угол до тех пор, пока он носом не будет смотреть в направлении мышки, и одновременно двигать его вперёд, чтобы разворот был по дуге, а не на месте.
|
(Offline)
|
|
16.07.2012, 19:56
|
#160
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Как убрать у окна обводку и кнопки? И можно ли как нибудь добавить иконку в трей?
Как то вот так хочу сделать:
|
(Offline)
|
|
17.07.2012, 03:50
|
#161
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Неужели никто не знает?
|
(Offline)
|
|
17.07.2012, 11:31
|
#162
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Это вопрос по БМаксу или по WinGUI?
|
(Offline)
|
|
17.07.2012, 12:10
|
#163
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
Не знаю. Я еще не разобрался. Думал сами поймете и скажете куда смотреть..
|
(Offline)
|
|
17.07.2012, 15:03
|
#164
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,360
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
1) Припашем виндовые WinApi ф-ции
Extern "Win32" Function SetWindowRgn(hWnd, hRgn, bRedraw) Function CreateRectRgn(nLeftRect, nTopRect, nRightRect, nBottomRect) Function CombineRgn(hrgnDest, hrgnSrc1, hrgnSrc2, fnCombineMode) End Extern
2) Эта фция принимает на вход
hWnd - хендл окна
Skin - пиксельная карта
Function SkinWindowII(hWnd:Int , Skin:TPixmap) Const NOTHING=-1 Local RectRgn = CreateRectRgn(0, 0, 0, 0) Local X% , Y% , StartX% , argb:Long For Y=0 Until Skin.Height For X=0 Until Skin.Width argb = ReadPixel(skin, X, Y) If (argb <> NOTHING) If StartX = -1 StartX = X EndIf Else If StartX > -1 Local MaskLine MaskLine = CreateRectRgn( StartX , Y , X , Y+1 ) CombineRgn ( RectRgn , RectRgn, MaskLine , 2 ) DeleteObject MaskLine StartX = -1 EndIf EndIf Next If StartX > -1 Local MaskLine MaskLine = CreateRectRgn( StartX , Y, X , Y+1 ) CombineRgn ( RectRgn , RectRgn , MaskLine, 2 ) DeleteObject MaskLine StartX = -1 EndIf Next SetWindowRgn ( hWnd , RectRgn , True) End Function
Думаю хендл окна ты получить сможешь сам.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
31.07.2012, 07:11
|
#165
|
Нуждающийся
Регистрация: 15.01.2010
Сообщений: 58
Написано 13 полезных сообщений (для 34 пользователей)
|
Ответ: Вопрос-Ответ (для новичков BlitzMax)
почему когда я компилирую проект второй раз в консоли пишется:
G:/BlitzMax/bin/ld.exe: cannot open output file F:/Dropbox/Magnavem/BlitzMax/1.2_pixelmap/New file.exe: Permission denied
отключил дропбокс, антивируса нет, UAC отключен (в нижнем положении).
Если удалять ехешник, то он снова появляется. Иногда пишет, что заблокировано процессом "System". Жду около минуты и снова могу компилировать нормально. Что делать пасаны?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:01.
|