forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   как добавить коллизию мешу с maplet (http://forum.boolean.name/showthread.php?t=21035)

scp_regalis4488 12.01.2025 21:41

как добавить коллизию мешу с maplet
 
у меня есть квадратная комната и проблема в том что когда я двигаю камерой она проходит сквозь комнату как можно добавить коллизию мешу ? в интернете нашел только как добавлять коллизию примитивным предметам по типу маленькой бутылки и куба

Randomize 16.01.2025 16:58

Ответ: как добавить коллизию мешу с maplet
 
Цитата:

Сообщение от scp_regalis4488 (Сообщение 319519)
у меня есть квадратная комната и проблема в том что когда я двигаю камерой она проходит сквозь комнату как можно добавить коллизию мешу ? в интернете нашел только как добавлять коллизию примитивным предметам по типу маленькой бутылки и куба

Сто лет на блице не писал, но как-то вот так это делалось:
PHP код:

Graphics3D(1024768)
SetBuffer(BackBuffer())


Const 
TypePlayer 1TypeWorld 2

Local world 
LoadMesh("world.obj") ; тут твой мир/комната/etc...
EntityType worldTypeWorld


Local player
CreateSphere() ; допустим наш игрок будет шариком
PositionEntity
(player0700)
TurnEntity(player000)
EntityRadius(player60) ; радиус шарика (настрой на свой вкус)
EntityType(playerTypePlayer)

Local camera=CreateCamera(player


Collisions(TypePlayerTypeWorld23) ; тута активируются коллизии

далее основной цикл твоей игры... 

Не забудь в цикле, перед RenderWorld добавить UpdateWorld

Arton 16.01.2025 18:06

Ответ: как добавить коллизию мешу с maplet
 
Меня опередили, попытаюсь пояснить тогда.

Я делал как-то так:
Код:

;=======Коллизии=======
Const HeroType = 1                        ;Персонаж
Const FloorType = 2                        ;Любая поверхность по которой нужно ходить
Const AllObjectType = 3                ;Стены и всё большое и статичное

...........какойтокод...........

Graphics3D 1920,1080,32,2

...........какойтокод...........

;=====================Игрок=============================

        player=CreateSphere()
                . . . . . .
                EntityRadius player,1.8,1.8
                EntityType player,HeroType

        map=LoadMesh()
                . . . . . .
                EntityType map,player,2,AllObjectType

;====================Коллизи============================
Collisions HeroType,FloorType,2,3        ;Коллизия персонажа с полом,
Collisions HeroType,AllObjectType,2,2        ;со стенами.

1) Надо задать каждому объекту с кем он может сталкиваться.
2) Определить тип (формы) столкновений, они фиксированные.
3) И реакция на столкновение: остановка, скольжение.

В твоём случае, твоя камера это мой HeroType, а комната AllObjectType.
Для стен и пола делал отдельно, что бы не было конфликта.
Если у тебя комната один меш, то её лучше разбить на части.

Я уже подзабыл, но вроде для простого столкновения со статичным достаточно камера—>стены.
А для сложного нужно в обе стороны (как у меня в коде). Например открытая дверь толкала персонажа (а может я напутал).

Справка на русском Blitz3D_help_русский.zip
Цитата:

Collisions src_type,dest_type,method,response
Параметры
src_type - тип объекта, который будет проверяться на столкновения.
dest_type - тип объекта, с которым будут обрабатываться столкновения.

method - метод определения столкновений.
1: столкновения типа эллипсоид-к-эллипсоиду
2: столкновения типа эллипсоид-к-полигону
3: столкновения типа эллипсоид-к-паралелепипеду

response - как будет вести себя объект при столкновении.
1: остановка
2: скольжение1 - столкновение с полным скольжением
3: скольжение2 - скольжение с предотвращением скатывания с наклонов

scp_regalis4488 16.01.2025 22:58

Ответ: как добавить коллизию мешу с maplet
 
спасибо вам ребята вы действительно помогаете


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot