forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Медленно проваливаться (http://forum.boolean.name/showthread.php?t=3390)

darkand 17.05.2007 14:55

Медленно проваливаться
 
Всем привет. Вопрос такой, как смоделировать медленное погружение
в какой либо меш, в тоже время с возможностью движения.
Кто помнит старые игры - в игре Dizzy герой медленно проваливался
в облако, но мог идти влево - вправо и прыгать.

smersh 17.05.2007 15:07

Re: Медленно проваливаться
 
if x=x1 and z=z1 then moveentity mesh,x,-0.001,z

darkand 17.05.2007 15:54

Re: Медленно проваливаться
 
Проблема в том, что все облака это большой меш. Соответственно столкновение с ними это collisions. А collisions останавливает все последующие moveentity, translationentity... А вот как создать последующее медленное погружение, после обработки столкновения.

smersh 17.05.2007 18:04

Re: Медленно проваливаться
 
попробуй объект привязать к pivot вокруг которого будет collisions для облака и при прикосновении объект опускать относительно pivot

axel186 17.05.2007 18:09

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


ЛысыЙ_Чук-Иванчук 18.05.2007 00:23

Re: Медленно проваливаться
 
entityCollision Entity, 0

darkand 18.05.2007 08:13

Re: Медленно проваливаться
 
Попробую по другому сформулировать вопрос.
Как проверить объекты на столкновение, или даже на
наложение друг на друга, но при этом не выполнять
никаких действий, типа стоп или скольжение.
Т.е. функция выдает 1 если два объекта столкнулись или 0 если нет.
При условии, что второй объект - полигон, а значит может иметь
сложную форму, а не только сферу или куб.

darkand 18.05.2007 10:18

Re: Медленно проваливаться
 
Нашел! Оказыться есть команда MeshesIntersect mesh,mesh.
Только написано, что она медленная.
Кто нибудь знает насколько она тормозит?

Platon 18.05.2007 14:12

Re: Медленно проваливаться
 
Все зависит от кол-ва треугольников у обоих мешей, сам представь - эта функция проверяет каждый треугольник с каждым.
И тебе уже сказали же - когда игрок столкнется с облаком отключай коллизию с помощью EnityType(Игрок, 0), а когда он будет находиться над облаком (подпрыгнет) включай ее обратно EntityType(Игрок, НомерКоллизииИгрока)

darkand 19.05.2007 08:07

Re: Медленно проваливаться
 
Ну хорошо. Столкнулись с облаком, отключил коллизию, отключил гравитацию, иначе герой просто провалится вниз. скорость падения задал постоянной 0.001.
Все отлично - медленно ползем вниз. И пошел в какую либо сторону. Облако кончилось - нужно выловить этот момент и включить коллизии и гравитацию.Или когда ноги героя медленно доползли до низа облака, нужно включать гравитацию, опять же как определить момент окончания облака.

Platon 19.05.2007 10:10

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


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

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