Список форумов форум

форум "Шахтеры Космоса"

Здрасьте!
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Программирование
На страницу Пред.  1, 2, 3  След.
 
Начать новую тему   Ответить на тему    Список форумов форум "Шахтеры Космоса" -> Просто треп.
Предыдущая тема :: Следующая тема  
Автор Сообщение
AndyLy



Репутация: +2    

Зарегистрирован: 26.10.2010
Сообщения: 198

СообщениеДобавлено: Чт Сен 15, 2011 5:05 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
и у тебя случайно нет готовых примеров: проверка на столкновение... треугольник и прямоугольник или сфера или многоугольник и многоугольник....

Нет были бы нормальные формулы- сделал бы сам физический движок. Так что если хочешь найти- ищи в этом направлении. Все физ.движки используют такие формулы, ищи исходники. Или погугли сами формулы.
Я всегда использовал только прямоугольник и круг. Сложную фигуру можно разбить на них же. Формулы их столкновений просты и соответственно работают быстро.
Например два шара : Sph_1 , Sph_2
Код:
Procedure Distance(x1,y1,x2,y2)
   k=((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))
   ProcedureReturn Sqr(k)
    EndProcedure

if Distance(Sph_1X,Sph_1Y,Sph_2X,Sph_2Y)<Sph_1Radius+Sph_2Radius
  collision=1: endif

_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Артём



Репутация: 0    

Зарегистрирован: 27.11.2010
Сообщения: 20

СообщениеДобавлено: Чт Сен 15, 2011 7:08 pm    Заголовок сообщения: Ответить с цитатой

Все одно как то криво.. Может определить вектор к центру и вытеснять по обратному вектору?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AndyLy



Репутация: +2    

Зарегистрирован: 26.10.2010
Сообщения: 198

СообщениеДобавлено: Чт Сен 15, 2011 9:23 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
вытеснять по обратному вектору?

Почему бы нет. Вектор движения у тебя уже есть, это OldX,CurX и OldY, CurY, при отталкивании поворачивай вектор на 180.
Честно говоря никогда не увлекался математикой и векторами в частности, ты наверное больше меня знаешь.

Почему криво? Посмотри кстати на форуме ПуреБасика, там AllCreator, делал как раз столкновения шариков, думаю пригодится.
http://purebasic.info/phpBB2/viewtopic.php?t=1103&postdays=0&postorder=asc&highlight=%F1%F2%EE%EB%EA%ED%EE%E2%E5%ED%E8%2A&start=0
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Артём



Репутация: 0    

Зарегистрирован: 27.11.2010
Сообщения: 20

СообщениеДобавлено: Пт Сен 16, 2011 7:00 am    Заголовок сообщения: Ответить с цитатой

Я думаю надо разработать универсальные функции проверки столкновений и методы работы с ними (некое подобие физического движка) только заточенного именно по PB чтобы проще было программировать. Просто я открыл Chipmunk, а там ничего не понятно(( и мало того все на указателях.

Может ты просвятишь меня немного) такая сцена. Платформа и герой ввиде прямоугольника. Герой двигается по ней, а сила тяготения прижимает к платформе... А то я не понял что к чему.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AndyLy



Репутация: +2    

Зарегистрирован: 26.10.2010
Сообщения: 198

СообщениеДобавлено: Пт Сен 16, 2011 4:46 pm    Заголовок сообщения: Ответить с цитатой

Ты сперва реши нужен ли он тебе. В простом платформере- он не особо нужен, если тебе нужна реалистичная физика- тогда конечно не выдумывай велосипед используй Chipmunk.
Но его придется изучать, я и половины до сих пор не знаю, потому что нормальной документации на него нет (тем более на русском) и примеры на Си, некоторые функции враппера не соответствуют оф. описанию, некоторых вообще нет.
Но если решишься :
http://chipmunk-physics.net/release/ChipmunkLatest-Docs/
Начинай разбираться вот с этого.

Цитата:
. А то я не понял что к чему.

А ты что уже начал Chipmunk использовать? Ну давай код- посмотрю.
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kequevoto
Гость

   




СообщениеДобавлено: Пт Янв 06, 2012 11:08 pm    Заголовок сообщения: Ответить с цитатой

хорошее начало
Вернуться к началу
ar



Репутация: 0    

Зарегистрирован: 12.12.2012
Сообщения: 2

СообщениеДобавлено: Ср Дек 12, 2012 9:52 am    Заголовок сообщения: Ответить с цитатой

привет AndyLy на счет моей процедуры я написал тебе там)(на http://www.purebasic.fr), блин опять у меня проблема в том что не могу загрузить свою карту созданную в tiled, ппц просто какой то, уже че только не побывал, не работает и все), помню я тебе уже писал об этом, и спрашивал, но ты не использовал его, и не знал, а я вот помню что решил эту проблему, но не помню как, помню только что решение было связано с кодировкой в которую я сохраняю, но сейчас это не работает, даже не знаю в какую сторону рыть)), так как все возможные варианты из прошлых знаний уже перебрал, и не один не сработал(пробывал сохранять карты во всех вариантах которые предлагает tiled)
это в движке mp3d процедуры в TileEngine)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AndyLy



Репутация: +2    

Зарегистрирован: 26.10.2010
Сообщения: 198

СообщениеДобавлено: Ср Дек 12, 2012 3:29 pm    Заголовок сообщения: Ответить с цитатой

Насчет проблем с tiled, могу только посоветовать у mpz спросить. Я вообще не в курсе.

Насчет интерфейса- могу рассказать, как я это делаю (в общих чертах). Если понравится- сделаешь под себя.
Смысл в том, чтобы все кнопочки унифицировать и упорядочить. То есть, создаешь структуру, например, такого вида :
Код:
Structure buttonstruc
     sprite.i ; "обычный" спрайт кнопки
     sprite_over.i ; спрайт кнопки при наведении мыши
     x.i: y.i ; координаты спрайта
     width.i ; ширина спрайта
     height.i ; высота спрайта
     mouse_over.b ; флаг- мышь на спрайте
EndStructure
NewMap Buttons.buttonstruc() ; создаешь карту кнопок и добавляешь какие нужно


Дальше обрабатываешь кнопки "пачкой", например проверяешь мышь:
Код:
ForEach Buttons()
     If CheckBoxD(Buttons()\x,Buttons()\y,Buttons()\width,Buttons()\height): Buttons()\mouse_over=1
     Else: Buttons()\mouse_over=0: EndIf
Next


Или делаешь вывод :
Код:
ForEach Buttons()
     If  Buttons()\mouse_over=1: DisplaySprite( Buttons()\sprite_over, Buttons()\x, Buttons()\y)
     Else: DisplaySprite( Buttons()\sprite_over, Buttons()\x, Buttons()\y): EndIf
Next


Можешь добавлять поля в структуру, какие надо, например, спрайт при клике, звук клика и т.д.
В общем, думаю принцип понятен.
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ar



Репутация: 0    

Зарегистрирован: 12.12.2012
Сообщения: 2

СообщениеДобавлено: Пт Дек 14, 2012 11:33 pm    Заголовок сообщения: Ответить с цитатой

AndyLy
спасибо за расширенный ответ, (я даже не знал что в purebasic есть foreach) Смеется , и списками пользовался только ради структуирования, и если честно то и пример вообще не понятен( А конкретней не понятно вот это
Код:
NewMap Buttons.buttonstruc() ; создаешь карту кнопок и добавляешь какие нужно
и откуда взялась процедура
Код:
Buttons()
, или это просто кусок кода? Если тебе не трудно то напиши маленький рабочий пример) чтоб было что разбирать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AndyLy



Репутация: +2    

Зарегистрирован: 26.10.2010
Сообщения: 198

СообщениеДобавлено: Сб Дек 15, 2012 12:31 am    Заголовок сообщения: Ответить с цитатой

Ты похоже справку по Пурику даже не открывал.
Цитата:
и откуда взялась процедура
Buttons()

Это не процедура, это структурированная карта, которая объявлена здесь :
NewMap Buttons.buttonstruc() ; создаешь карту кнопок

Вот простейший пример использования карты :

Код:
Structure struc: a.s: b.f: EndStructure
NewMap TestMap.struc() ; создаем карту с типом структуры struc
TestMap("first")\a="gjhjhjjjjhj"  ; добавляем элемент с "ключом" first , поскольку такого элемента еще нет в карте- он создается автоматически
TestMap("first")\b=0.234
TestMap("sec")\a="cxvxvcxv"
TestMap("sec")\b=0.987

ForEach TestMap()
     Debug MapKey(TestMap()) ; возвращает текущий "ключ" элемента
     Debug TestMap()\a
     Debug TestMap()\b
     Debug "=================="
Next


Но прочитай лучше раздел справки Map.
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
AndyLy



Репутация: +2    

Зарегистрирован: 26.10.2010
Сообщения: 198

СообщениеДобавлено: Сб Дек 15, 2012 12:38 am    Заголовок сообщения: Ответить с цитатой

P.s. Я посмотрел: я написал процедуру свою
CheckBoxD(Buttons()\x,Buttons()\y,Buttons()\width,Buttons()\height)
Это из списка моих процедур, какими я постоянно пользуюсь. Ничего особенного, но тебе как начинающему , могут пригодится. Я начал его делать, не закончил, но зато есть справка Улыбка
Там, насколько помню, я что-то и с тайлами начинал мутить.

Находится библиотечка здесь :
http://spaceminers.mybb2.ru/viewtopic.php?t=27
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
guest
Гость

   




СообщениеДобавлено: Вт Июн 10, 2014 10:16 pm    Заголовок сообщения: Ответить с цитатой

переводите свои игры на ConstructClassic_r2 или Construct 2 и конец мученьям.
Вернуться к началу
guest
Гость

   




СообщениеДобавлено: Вт Июн 10, 2014 10:18 pm    Заголовок сообщения: Ответить с цитатой

Я перечислил вам бесплатные игровые движки с некотором замахом на 3D и перспективой переноса на мобильные платформы (Construct 2).
Вернуться к началу
AndyLy



Репутация: +2    

Зарегистрирован: 26.10.2010
Сообщения: 198

СообщениеДобавлено: Ср Июн 11, 2014 12:32 am    Заголовок сообщения: Ответить с цитатой

Цитата:
конец мученьям

Каким мучениям?
Конструкторы не люблю, тем более такие.. упрощенные, так скажем.
Я давно пишу на Purebasic + Ogre3D.
_________________
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
user
Гость

   




СообщениеДобавлено: Ср Июн 11, 2014 12:16 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
конец мученьям

для тех, у кого есть какая-то идея, но не слишком понимает с какой стороны подойти, для того, чтобы стать игроделом и её реализовать. Там тоже можно вписывать какие-то свои алгоритмы, а не только визуализировать блоками. Идеально.
Ogre3D могут все нахваливать, но лично я не понял как его поставить (или скорее, запустить) в ubuntu, да и тяжеловат он для моей системы.
Вернуться к началу
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов форум "Шахтеры Космоса" -> Просто треп. Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3  След.
Страница 2 из 3

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Вы можете бесплатно создать форум на MyBB2.ru, RSS