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=8992)

Nex 02.09.2009 07:28

Ответ: переход между уровнями ...
 
Вроде так.
Код:

If MouseDown (1) Then
        Pick = CameraPick (camera,MouseX(),MouseY())
                If Pick = door Then
                        ;тут код, что надо сделать если тыкнул в дверь
                EndIf                       
EndIf


drave 02.09.2009 20:07

Ответ: переход между уровнями ...
 
А вот фиг .... Не пашет и всё я уже так пробовал раз 50 наверно !

drave 02.09.2009 20:10

Ответ: переход между уровнями ...
 
SkyDream , может ты сбацаешь какой нить мини-примерчик , чтоб при наводке кубик он посветился а при нажатии на него и взлетал например ! ..... Все равно спс кстати !

PalVitalia 05.09.2009 18:37

Ответ: переход между уровнями ...
 
Graphics3D 640,480,16,2
camera=CreateCamera()
light=CreateLight()

player=CreateSphere()
PositionEntity player, 2, 0, 0
cam=CreateCamera(player)
TurnEntity player, 0,30,0

watertext=LoadTexture("floor.jpg")
water=CreatePlane()
PositionEntity water,0,-2,0
ScaleTexture watertext, 1,1
EntityTexture water,watertext

;create texture for the movie & 3d entity
movietex = CreateTexture(256,256,256+48)
cube = CreateCube()
EntityPickMode cube, 2
EntityTexture cube,movietex
MoveEntity cube,0,0,2

;load movie
movie = OpenMovie("video.avi")

While Not KeyHit(1)
If (MouseHit(1)=True)
ent = CameraPick(cam,MouseX(),MouseY())
If ent
If MoviePlaying(movie)=0
movie = OpenMovie("video.avi")
EndIf
EndIf
EndIf
If KeyDown(200) MoveEntity player,0,0,0.2
If KeyDown(208) MoveEntity player,0,0,-0.2
If KeyDown(203) TurnEntity player,0,2,0
If KeyDown(205) TurnEntity player,0,-2,0

DrawMovie(movie)
CopyRect 0,0,256,256,0,0,BackBuffer(),TextureBuffer(moviete x)

RenderWorld
Flip
Wend
End

Nex 06.09.2009 10:40

Ответ: переход между уровнями ...
 
Как то так... Я просто таким не страдал поэтому может можно и проще сделать.
Код:

Graphics3D 1024,768,32,2
        SetBuffer BackBuffer()
       
Global cube = CreateCube()
        EntityPickMode cube,2
        EntityColor cube,255,0,0
        RotateEntity cube,20,20,20
        PositionEntity cube,0,0,15
Global light = CreateLight()
        RotateEntity light,90,0,0
Global cam = CreateCamera()
Global Pick,Pick2



While Not KeyHit(1)
        Update()
        mouselook(cam)

RenderWorld()
Flip
Wend:End

Function Update()
        Pick = CameraPick (cam,MouseX(),MouseY())
                If Pick = cube Then
                        EntityColor cube,0,255,0
                                Else
                        EntityColor cube,255,0,0
                EndIf
               
                If MouseDown (1) Then
                        Pick2 = CameraPick (cam,MouseX(),MouseY())
                                If Pick2 = cube Then
                                        EntityColor cube,255,0,0
                                        MoveEntity cube,0,.5,0
                                EndIf
                EndIf
End Function



Function mouselook(ent) ; Функция обзора мышью
        mxspd#=MouseXSpeed()*0.25
        myspd#=MouseYSpeed()*0.25
                MoveMouse GraphicsWidth()/2,GraphicsHeight()/2       
        campitch#=EntityPitch(ent)+myspd#
                If campitch#<-85 Then campitch#=-85 ; ограничения поворота
                If campitch#>85 Then campitch#=85
                        RotateEntity ent,campitch#,EntityYaw(ent)-mxspd#,EntityRoll(ent)
End Function


drave 07.10.2009 01:02

Ответ: переход между уровнями ...
 
Кхм , как странно , использовал код SkyDream'а на обычном энтити , работает , но стоит вставить аниммэш и тогда уже пик не срабатывает ?! Не подскажите в чём фишка ?! Пик + Аниммэш = пососамба !!! ( Кстати SkyDream , низкий тебе поклон за помощ нубью ) !

Nex 07.10.2009 07:29

Ответ: переход между уровнями ...
 
drave, начет пик аниммеш я че то хз. Поидее должно и на нем работать. Может ты забыл добавить EntityPickMode? :)
Я тоже нуб еще и еще долго им буду и "нуб" мне кажется это как то грубо и не стоит этим словом себя или кого нибудь называть ибо каждый из нас в чем то нуб... :-)

3dr1aN 07.10.2009 13:38

Ответ: переход между уровнями ...
 
рекурсия. аниммеш проверять по чилдам.

drave 07.10.2009 16:07

Ответ: переход между уровнями ...
 
А по русски :) !? Покажи примерчик плиз !!!!:crazy:

EvilChaotic 07.10.2009 16:51

Ответ: переход между уровнями ...
 
Цитата:

Сообщение от drave (Сообщение 120878)
А по русски :) !? Покажи примерчик плиз !!!!:crazy:

Ну тут все просто. При загрузке через аним меш много чего отпадает и в то же время наоборот. Вот например текстурить его только по чилдам, пикать тоже по чилдам, чилды мы ищем в меше так FindChild(ent,who$)

Код:

FindChild ( entity,child_name$ )
Параметры
entity - указатель объекта
child_name$ - имя дочернего объекта для поиска 

Описание
Возвращает указатель на первый же дочерний объект указанного объекта, имя которого совпадает с child_name$.

Ну или проще напишу для тебя поконкретней. Надеюсь все правильно. Функция сработает если в аним меши есть чилды, автоматом присваивает всем чилдам заданный PickMode.

Код:

Function EntityPickModeAnim(entity,mode=2)
        If CountChildren(entity) > 0
                For childcount = 1 To CountChildren(entity)
                        child = GetChild(entity,childcount)
                        EntityPickMode child,mode
                Next
        EndIf 
End Function

Применять так:

entity = LoadAnimMesh("mesh.b3d")
EntityPickModeAnim(entity,2)


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

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