|
3D-программирование Вопросы, касающиеся программирования 3D мира |
15.11.2007, 20:27
|
#1
|
AnyKey`щик
Регистрация: 09.03.2007
Сообщений: 7
Написано 0 полезных сообщений (для 0 пользователей)
|
Обнаружение столкновений
Как лучше в блитзе определять столкновения между двумя мешами(наиболее просто и поменьше кода)?
Ремарка:
Я блитз3д начал учить 4 дня назад,так что простите за тупые вопросы
|
(Offline)
|
|
15.11.2007, 20:38
|
#2
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Re: Обнаружение столкновений
загляни в поиск на форуме.
ну а если так, то попытаюсь быстро тебе кодом объяснить:
const playercol=1, worldcol=2
...
entitytype player, playercol
...
entitytype world, worldcol
...
collisions playercol, worldcol, 2, 3
while not keyhit(1)
updateworld()
renderworld()
flip
wend
end
|
(Offline)
|
|
16.11.2007, 14:53
|
#3
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Re: Обнаружение столкновений
Если полигональное не нужно то можно и таким образом:
[blitz]
Function Collide(Entity1,Entity2)
If EntityX(Entity1)<EntityX(Entity2)+MeshWidth(Entity 2) and EntityX(Entity1)>EntityX(Entity2)+MeshWidth(Entity 2) and EntityY(Entity1)<EntityY(Entity2)+MeshHeight(Entit y2) and EntityY(Entity1)>EntityY(Entity2)+MeshHeight(Entit y2) and Entityz(Entity1)<Entityz(Entity2)+MeshDepth(Entity 2) and Entityz(Entity1)>Entityz(Entity2)+MeshDepth(Entity 2) then
PositionEntity entity1,EntityX(Entity2),Entityy(Entity2),Entityz( Entity2)
end if
End Function
[/blitz]
Данная ф-ция останавливает объект Entity1 когда он сталкнулся с Entity2
__________________
|
(Offline)
|
|
16.11.2007, 16:17
|
#4
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Re: Обнаружение столкновений
Сообщение от mr.DIMAS
Если полигональное не нужно то можно и таким образом:
[blitz]
Function Collide(Entity1,Entity2)
If EntityX(Entity1)<EntityX(Entity2)+MeshWidth(Entity 2) and EntityX(Entity1)>EntityX(Entity2)+MeshWidth(Entity 2) and EntityY(Entity1)<EntityY(Entity2)+MeshHeight(Entit y2) and EntityY(Entity1)>EntityY(Entity2)+MeshHeight(Entit y2) and Entityz(Entity1)<Entityz(Entity2)+MeshDepth(Entity 2) and Entityz(Entity1)>Entityz(Entity2)+MeshDepth(Entity 2) then
PositionEntity entity1,EntityX(Entity2),Entityy(Entity2),Entityz( Entity2)
end if
End Function
[/blitz]
Данная ф-ция останавливает объект Entity1 когда он сталкнулся с Entity2
|
Ужос.
|
(Offline)
|
|
16.11.2007, 16:55
|
#5
|
Нуждающийся
Регистрация: 31.07.2007
Сообщений: 89
Написано одно полезное сообщение
|
Re: Обнаружение столкновений
и не говори))))) но наверняка работает быстрее стандартных, но для новичка в блице пока что лучше collisions ИМХО
|
(Offline)
|
|
16.11.2007, 17:37
|
#6
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Re: Обнаружение столкновений
Сообщение от mr.DIMAS
Если полигональное не нужно то можно и таким образом:
[blitz]
Function Collide(Entity1,Entity2)
If EntityX(Entity1)<EntityX(Entity2)+MeshWidth(Entity 2) and EntityX(Entity1)>EntityX(Entity2)+MeshWidth(Entity 2) and EntityY(Entity1)<EntityY(Entity2)+MeshHeight(Entit y2) and EntityY(Entity1)>EntityY(Entity2)+MeshHeight(Entit y2) and Entityz(Entity1)<Entityz(Entity2)+MeshDepth(Entity 2) and Entityz(Entity1)>Entityz(Entity2)+MeshDepth(Entity 2) then
PositionEntity entity1,EntityX(Entity2),Entityy(Entity2),Entityz( Entity2)
end if
End Function
[/blitz]
Данная ф-ция останавливает объект Entity1 когда он сталкнулся с Entity2
|
вот это колизии !!
вот этого отжог !!
|
(Offline)
|
|
16.11.2007, 19:51
|
#7
|
Оператор ЭВМ
Регистрация: 15.11.2007
Сообщений: 34
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Обнаружение столкновений
Нифуя непонял гггг
|
(Offline)
|
|
16.11.2007, 20:53
|
#8
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Re: Обнаружение столкновений
но наверняка работает быстрее стандартных
|
работает быстрее канешно. Да с функцией я напарил, ужс. приызнаю не для новичкофф она.
__________________
|
(Offline)
|
|
16.11.2007, 21:07
|
#9
|
AnyKey`щик
Регистрация: 09.03.2007
Сообщений: 7
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Обнаружение столкновений
Спасибо за функцию.Точно уж не для новичков
|
(Offline)
|
|
16.11.2007, 21:29
|
#10
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Re: Обнаружение столкновений
Эээ, а что в ней сложного?))
|
(Offline)
|
|
16.11.2007, 21:30
|
#11
|
Нуждающийся
Регистрация: 31.07.2007
Сообщений: 89
Написано одно полезное сообщение
|
Re: Обнаружение столкновений
в ней нету ничего сверхсложного....пусть возьмет её на заметку....но для основ блица - это слишком....вот когда он дойдет до оптимизации....=)
|
(Offline)
|
|
16.11.2007, 22:24
|
#12
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Re: Обнаружение столкновений
Сомневаюсь, что она будет быстрее блитц коллизии сфера-куб (тут по сути куб-куб)
__________________
|
(Offline)
|
|
16.11.2007, 23:50
|
#13
|
|
Re: Обнаружение столкновений
MeshWidth в блице каждый раз пересчитывается ?
|
|
|
17.11.2007, 09:58
|
#14
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Re: Обнаружение столкновений
Этой функцией себе только гемор в будущем создавать,
когда надо будет обрабатывать различные события при коллизиях.
|
(Offline)
|
|
17.11.2007, 14:41
|
#15
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Re: Обнаружение столкновений
Этой функцией себе только гемор в будущем создавать,
когда надо будет обрабатывать различные события при коллизиях.
|
Блин, обосрали меня с моей функцией!!! Достали!!! Тема называется Обнаружение столкновений, а не "Обсуждаем функцию mr.Dimas'a"!
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Анимиция при столкновении |
Unodeya |
3D-программирование |
7 |
06.06.2009 21:18 |
Часовой пояс GMT +4, время: 19:01.
|