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

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

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 17.05.2007, 14:55   #1
darkand
Оператор ЭВМ
 
Регистрация: 29.08.2006
Сообщений: 35
Написано одно полезное сообщение
Медленно проваливаться

Всем привет. Вопрос такой, как смоделировать медленное погружение
в какой либо меш, в тоже время с возможностью движения.
Кто помнит старые игры - в игре Dizzy герой медленно проваливался
в облако, но мог идти влево - вправо и прыгать.
(Offline)
 
Ответить с цитированием
Старый 17.05.2007, 15:07   #2
smersh
Нуждающийся
 
Регистрация: 23.02.2007
Сообщений: 98
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Медленно проваливаться

if x=x1 and z=z1 then moveentity mesh,x,-0.001,z
(Offline)
 
Ответить с цитированием
Старый 17.05.2007, 15:54   #3
darkand
Оператор ЭВМ
 
Регистрация: 29.08.2006
Сообщений: 35
Написано одно полезное сообщение
Re: Медленно проваливаться

Проблема в том, что все облака это большой меш. Соответственно столкновение с ними это collisions. А collisions останавливает все последующие moveentity, translationentity... А вот как создать последующее медленное погружение, после обработки столкновения.
(Offline)
 
Ответить с цитированием
Старый 17.05.2007, 18:04   #4
smersh
Нуждающийся
 
Регистрация: 23.02.2007
Сообщений: 98
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Медленно проваливаться

попробуй объект привязать к pivot вокруг которого будет collisions для облака и при прикосновении объект опускать относительно pivot
(Offline)
 
Ответить с цитированием
Старый 17.05.2007, 18:09   #5
axel186
Знающий
 
Регистрация: 07.09.2005
Сообщений: 238
Написано 2 полезных сообщений
(для 2 пользователей)
Re: Медленно проваливаться

тут надо отключать колизию..

Const CubeType=1

Graphics3D 320,240,16,2
SetBuffer BackBuffer()

Camera=CreateCamera()
PositionEntity Camera,0,20,0
RotateEntity Camera,90,0,0

Cube=CreateCube()
PositionEntity Cube,10,0,10
EntityColor Cube,0,255,0

Cube2=CreateCube()
EntityType Cube2,CubeType
EntityColor Cube2,255,0,0

tip=1

Collisions 1,1,2,2

Repeat

If KeyDown(200) Then MoveEntity Cube,0,0,0.3
If KeyDown(208) Then MoveEntity Cube,0,0,-0.3
If KeyDown(205) Then MoveEntity Cube,0.3,0,0
If KeyDown(203) Then MoveEntity Cube,-0.3,0,0

If KeyHit(57) Then tip=tip*(-1)

If tip=1 Then EntityType Cube,CubeType

UpdateWorld
RenderWorld
Text 10,10,"Press 'Space' to Active Collisions"
Flip
Until KeyHit(1)
End
(Offline)
 
Ответить с цитированием
Старый 18.05.2007, 00:23   #6
ЛысыЙ_Чук-Иванчук
Дэвелопер
 
Регистрация: 19.03.2006
Сообщений: 1,241
Написано 10 полезных сообщений
(для 17 пользователей)
Re: Медленно проваливаться

entityCollision Entity, 0
(Offline)
 
Ответить с цитированием
Старый 18.05.2007, 08:13   #7
darkand
Оператор ЭВМ
 
Регистрация: 29.08.2006
Сообщений: 35
Написано одно полезное сообщение
Re: Медленно проваливаться

Попробую по другому сформулировать вопрос.
Как проверить объекты на столкновение, или даже на
наложение друг на друга, но при этом не выполнять
никаких действий, типа стоп или скольжение.
Т.е. функция выдает 1 если два объекта столкнулись или 0 если нет.
При условии, что второй объект - полигон, а значит может иметь
сложную форму, а не только сферу или куб.
(Offline)
 
Ответить с цитированием
Старый 18.05.2007, 10:18   #8
darkand
Оператор ЭВМ
 
Регистрация: 29.08.2006
Сообщений: 35
Написано одно полезное сообщение
Re: Медленно проваливаться

Нашел! Оказыться есть команда MeshesIntersect mesh,mesh.
Только написано, что она медленная.
Кто нибудь знает насколько она тормозит?
(Offline)
 
Ответить с цитированием
Старый 18.05.2007, 14:12   #9
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: Медленно проваливаться

Все зависит от кол-ва треугольников у обоих мешей, сам представь - эта функция проверяет каждый треугольник с каждым.
И тебе уже сказали же - когда игрок столкнется с облаком отключай коллизию с помощью EnityType(Игрок, 0), а когда он будет находиться над облаком (подпрыгнет) включай ее обратно EntityType(Игрок, НомерКоллизииИгрока)
(Offline)
 
Ответить с цитированием
Старый 19.05.2007, 08:07   #10
darkand
Оператор ЭВМ
 
Регистрация: 29.08.2006
Сообщений: 35
Написано одно полезное сообщение
Re: Медленно проваливаться

Ну хорошо. Столкнулись с облаком, отключил коллизию, отключил гравитацию, иначе герой просто провалится вниз. скорость падения задал постоянной 0.001.
Все отлично - медленно ползем вниз. И пошел в какую либо сторону. Облако кончилось - нужно выловить этот момент и включить коллизии и гравитацию.Или когда ноги героя медленно доползли до низа облака, нужно включать гравитацию, опять же как определить момент окончания облака.
(Offline)
 
Ответить с цитированием
Старый 19.05.2007, 10:10   #11
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: Медленно проваливаться

Ну тогда юзай EntityPick(), она будет возвращать хендл меша облака если оно оказалось в радиусе игрока.
а облако ставь на проверку с помощью EntityPickMode()
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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