Страница: 1 | 2 | 3 |
Вопрос: >> ТРУДНАЯ ЗАДАЧА <<
Добавлено: 22.11.05 23:39
Автор вопроса: AgentFire | ICQ: 192496851
Ответы
Всего ответов: 45
Номер ответа: 31
Автор ответа:
Dushes
ICQ: 249195431
Вопросов: 8
Ответов: 110
Профиль | | #31
Добавлено: 28.11.05 16:01
А если серьезно, то вот справочник именно по физике игр - на английском, но просто написано:
http://us.f2.yahoofs.com/bc/412c1b28_16a12/bc/New.Riders.Beginning.Math.and.Physics.for.Game.Programmers.chm?bfNQwiDBuckJVbiG
Beginning Math and Physics for Game Programmers
Извините за такую ссылку, но просто все старые источники почему то не пашут =(...
Номер ответа: 32
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #32
Добавлено: 28.11.05 17:16
Да и эта у меня не открывается...
Насчет танков - можно использовать в качестве расчетных моделей их ограничивающие ящики - пока, думаю, этого хватит. Что касается взаимодействия снарядов, такого я что-то нигде не встречал... хотя интерес вызывает.
Номер ответа: 33
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #33
Добавлено: 28.11.05 18:14
про снаряды – это отдельная история, хотя и прикольная
по сути они должны взрываться, но они реагируют друг на друга как бильярдные шары!
Номер ответа: 34
Автор ответа:
Dushes
ICQ: 249195431
Вопросов: 8
Ответов: 110
Профиль | | #34
Добавлено: 28.11.05 19:30
Извиняюсь за битую ссылку.
http://www.boolean.name/archive/files/physics2004.rar
Номер ответа: 35
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #35
Добавлено: 28.11.05 21:10
Хочешь сказать, что приближение танков прямоугольниками лучше, чем приближение кружками? Я бы просто сделал танки кружками, более-менее ложащиеся на прямоугольник.
Если уж на то пошло, что можно чделать танку монохромную маску (то бишь где он есть и уде его нет) и сканировать. Если два пикселя наложились - значит столкнулись. Но вот куда их разъезжать после этого - не знаю.
Номер ответа: 36
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #36
Добавлено: 29.11.05 11:58
Нужно ведь в 3D столкновения просчитать - чтобы танк вел себя правдоподобно, если он упал со скалы на другой танк. А если этот танк лежит на боку? Полагаю, что лучше обойтись без маски, а сложные объекты составлять из нескольких ящиков.
Номер ответа: 37
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #37
Добавлено: 29.11.05 12:48
Страшный Сон!
У меня 2D. Мне теперь нужно хотя-бы узнать, столкнулись они или нет. А куда двигать, это я разобрался. Разобрался не правильно, но всеже лучше чем ничего
Номер ответа: 38
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #38
Добавлено: 29.11.05 15:08
Предлагаю тогда такой вариант collision detection: составляешь из восьми точек два прямоугольника, ограничивающие танки, потом проверяешь принадлежность каждой точки одного прямоугольника другому. Если хотя бы одна из восьми точек принадлежит другому прямоугольнику, значит танки столкнулись. Могу дать код, определяющий принадлежность точки произвольному многоугольнику, если он тебе нужен.
Номер ответа: 39
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #39
Добавлено: 29.11.05 16:46
Номер ответа: 40
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #40
Добавлено: 29.11.05 22:17
Номер ответа: 41
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #41
Добавлено: 30.11.05 17:06
Ну, грубо говоря, функция у меня есть такого типа:
Private Function IsPointInSector_Incl(ByVal X&, ByVal Y&, ByVal Sectnum& As Byte
Dim I&, R As Byte
For I = SECTOR(Sectnum).firstv To SECTOR(Sectnum).firstv + SECTOR(Sectnum).vertnum - 1
With VERTEX(I)
'D = 0
If Abs(Dist(X, Y, VERTEX(.point2).X, VERTEX(.point2).Y) + Dist(X, Y, .X, .Y) - Dist(.X, .Y, VERTEX(.point2).X, VERTEX(.point2).Y)) < 1 Then R = 1: Exit For
If X > Min(.X, VERTEX(.point2).X) Then
If X <= Max(.X, VERTEX(.point2).X) Then
If Y <= .Y + Int((VERTEX(.point2).Y - .Y) / (VERTEX(.point2).X - .X) * (X - .X)) Then
R = 1 - R
'D = 1
End If
End If
End If
'If .X = VERTEX(.point2).X And VERTEX(.point2).X = X Then R = 1 - R
End With
Next I
IsPointInSector_Incl = R
End Function
Ее можно переделать под сектор (полигон с возможными дырками), передаваемый через аргумент, только мне что-то влом. Но думаю, что идея понятна. Функции Min, Max и Dist написать, думаю, труда не составит.
Номер ответа: 42
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #42
Добавлено: 30.11.05 18:17
Ух ты, такое и в Страшном Сне не приснится ))
Стоп... А как секторы создавать? И Vertex'ы?
Номер ответа: 43
Автор ответа:
AASoft
Вопросов: 86
Ответов: 920
Профиль | | #43
Добавлено: 30.11.05 21:34
@Noviks
a che slozhnogo v etom kode? pomoemu vse prosto:
prohodish po kazhdoj tochke i sravninaeshe koordinaty s kazhdoj tochkoj drugogo pryamougol`hika. esli vnutri->collision.
mozhno kstati ispol`zovat` IntersectRect API, no pomoemu ona tormoznutaya nemnogo.
Номер ответа: 44
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #44
Добавлено: 30.11.05 21:59
Можно объявить сектор (полигон с дырками) примерно таким образом:
Type POLYGON
Vertnum As Long
Vrt() As VERTEX
End Type
Type VERTEX
X As Long
Y As Long
Point2 As Long
End Type
Номер ответа: 45
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #45
Добавлено: 01.12.05 16:56
mozhno kstati ispol`zovat` IntersectRect API, no pomoemu ona tormoznutaya nemnogo.