Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > JAVA Micro Edition > Программирование

Программирование Вопросы связанные с программированием в JAVA

Ответ
 
Опции темы
Старый 08.07.2009, 02:52   #1
beZ_probleM
ПроЭктировщик
 
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений
(для 8 пользователей)
Сообщение Коллизия - столкновение обектов в 3Д мире

подскажыте плиз как организовать столкновение(пересичение(?)) обектов в 3Д мире?
у меня есть два обекта
один обект двигается по "горбатой" поверхности(холмы и впадины)
и он не должен проваливатся сквоь неё...
какими методами можно такое организовать?

кто хоть чтото знает отписуйте пожалуйста
(Offline)
 
Ответить с цитированием
Старый 08.07.2009, 02:59   #2
beZ_probleM
ПроЭктировщик
 
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений
(для 8 пользователей)
Ответ: Коллизия - столкновение обектов в 3Д мире

нашол вот такое...
The simplest form of collision-detection I know of uses bounding circles. I'm assuming you're doing a 2-Dimensional game but the same procedure works just as well in 3D (except then they're called bounding spheres, not circles!).

Let's say every moving piece of your game is represented by a GameObject class, which has an x and a y co-ordinate, plus a radius that describes a circle big enough to completely surround the GameObject. You keep all your GameObjects in an array:

GameObject[] objects;

Collision Detection can be computationally expensive if you have a lot of moving objects because in the exhaustive case you have to compare every object with every other object.

int i,j,dx,dy,r1s;
GameObject g1, g2;
for ( i = 0 ; i < objects.length-1 ; i ++ ) {
g1 = objects[i];
// calculate the radius squared
r1s = g1.radius * g1.radius;
for ( j = i+1 ; j < objects.length ; j ++ ) {
g2 = objects[j];
// calculate the distance between the 2 objects
dx = g1.x - g2.x;
dy = g1.y - g2.y;
// if the distance squared is less than both of
// the radii squared, the circles overlap (collision!)
if ( ( (dx * dx) + (dy * dy) ) < ( r1s + (g2.radius * g2.radius) ) ) {
doCollision( g1, g2 );
}
}
}

This is the easiest way to do things, but of course it only works well with objects that are perfectly round ( PacMan ! ). What you should do if you need more accurate Collision Detection is use this method first to see if any of the bounding spheres overlap. If they do, use a more precise (and more computationally intensive) C.D. method like line or polygon intersection.
если я правильно перевожу, то здесь пишется что ето для круглых обектов тоесть центром столкновения есть точка(не полигоны)?
меня впринцыпе ето устраивает... ещёбы ктото обяснил как ето использовать в програме))
(Offline)
 
Ответить с цитированием
Старый 30.06.2010, 01:27   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Коллизия - столкновение обектов в 3Д мире

Столкновение объекта с ландшафтом в простейшем случае организуется на основе карты высот. Определяется позиция объекта на карте высот, рассчитывается высота "земли" под ногами, положение объекта над землей корректируется в соотвествии с полученной высотой.

Другой вариант - проверять пересечение луча, пущеного из точки объекта вниз с каждым треугольником ландшафта. Здесь более сложная математика.

Ой я нечайно тему поднял ))
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 05.01.2011, 22:00   #4
nil0q
ПроЭктировщик
 
Аватар для nil0q
 
Регистрация: 30.06.2009
Адрес: Челябинская обл.
Сообщений: 111
Написано 32 полезных сообщений
(для 99 пользователей)
Ответ: Коллизия - столкновение обектов в 3Д мире

-> http://forum.boolean.name/showpost.p...24&postcount=2
__________________
Аинéжарбази овокáсьф имятнэ́меле как, имякщтóт и имяини́ль оклёт ими́ньдо сяюзлёп, ильсы́м эынэвьтспóс ышáн мóнян тягалзи, эы́жущт тят-ищт сант-ищтý анакаккáт; áкызэй овóваримь авотэ́ як итя́ммарг тыжýлс аирьтэмяег аянлетя́трэщтанот, мадóраи мынавóзарбо мэ́сьф мынтáняп авокáныдя, икиньхэ́ть мóкызэй астэя́львэй шóтрэщт ильсэ́й.
Щамóпф раткáдэрь оидюá!
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Физика в 3Д мире beZ_probleM Программирование 2 20.12.2011 05:24
Самые дорогие вещи в мире Dzirt Болтовня 3 22.09.2009 15:42
Скроллинг в 2д мире. Данил FAQ и уроки 15 06.07.2009 18:54
Загрузка обектов с помощю FineChilder Dkey Blitz3D 13 17.06.2007 01:56
Столкновение ЛысыЙ_Чук-Иванчук 3D-программирование 7 13.10.2006 21:11


Часовой пояс GMT +4, время: 17:43.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com