Nub | Дата: Четверг, 19.01.2012, 13:00 | Сообщение # 1 |
ламер
Группа: Пользователи
Сообщений: 37
Награды: 0
Репутация: 0
Статус: Offline
| Ну сделал я модель корабля понаставил кубиков настроил а он сквозь них проходит.Ну то есть выступающие края.наверное от того что сфера к полигонам поставил.Как сделать так чтобы коллизии на весь корабль действовали?Заранее спасибо.
Лучшее - враг хорошего. Сделал ты игру, решил улучшить, а потом до ночи сидишь и думаешь, что же ты такого сделал.
|
|
| |
MishanayCool | Дата: Четверг, 19.01.2012, 14:01 | Сообщение # 2 |
разработчик
Группа: Пользователи
Сообщений: 226
Награды: 11
Репутация: 20
Статус: Offline
| Из Help'а blitz3D: MeshesIntersect (mesh_a,mesh_b ) Параметры mesh_a - указатель первого объекта типа mesh mesh_b - указатель второго объекта типа mesh
Описание Возвращает True, если указанные объекты пересекаются. Это довольно медленная функция - не используйте ее без острой необходимости. Это единственная в настоящее время команда в Blitz3D, которая проверяет столкновения по типу: полигон к полигону.
Пример: Code Graphics3D 640,480 ,0,2 SetBuffer BackBuffer()
camera=CreateCamera()
light=CreateLight() RotateEntity light,90,0,0
Cube=CreateCube():ScaleEntity Cube,3,1,1 PositionEntity Cube,-2,0,10
Sphere=CreateSphere(32):ScaleEntity Sphere,3,1,1 PositionEntity Sphere,2,0,10
While Not KeyDown( 1 )
TurnEntity Cube,1,1,1 TurnEntity Sphere,-1,-1,-1
RenderWorld
; Если пересекаются - выдать сообщение If MeshesIntersect(Cube,Sphere)=True Then Text 0,0,"Объекты пересекаются!"
Flip
Wend
End
Чтобы избежать тормозов на сколько это возможно, можно поместить твой корабль в обтекающий меш с минимум количеством полигонов, потом эту обёртку сделать прозрачной(EntityAlpha mesh,0) и прилепить к твоему кораблю(EntityParent обёртка,корабль). Далее столкновения в команде MeshesIntersect уже прописывать с этой невидимой обёрткой. Так будет меньше нагрузка для этой команды из-за меньшего количества полигонов.
Типа так
Но это не вариант, много мороки, представь если столкновение твоего корабля будет фиксироваться с высокополигонарным Тиррейном(Ландшафтом). Хотя можно прописать сам корабль для тиррейна обычной сферической коллизией, а всё остальное распихать в такие коробки. Короче идти на такие хитрости. Тут больше упор на моделирование чем на кодинг.
Скорей всего многие посоветуют тебе какой нибудь физический движок подключить.
MiniDemo3D - Blitz3D
Сообщение отредактировал MishanayCool - Четверг, 19.01.2012, 15:35 |
|
| |