Насчет взаимодействия объектов и переходы на уровни
| |
ЯлюблюЕЕ | Дата: Воскресенье, 18.04.2010, 22:51 | Сообщение # 1 |
ламер
Группа: Пользователи
Сообщений: 20
Награды: 0
Репутация: 0
Статус: Offline
| Привет всем! у меня проблема такая! мне нужно чтобы мой персонаж "робот" при подходе к 3д объекту созданному в другой части карты ( чтобы при подходе вплотную ну или радиус чтоб там в нескольких сантиметрах был от 3д объекта) чтобы после этого действия включался другой файл блитза(а на другом файле загружена просто 3д сцена с анимацией), но что бы после того как проиграл этот файл он обратно вернулся на исходную перед стоящим возле объекта( но что бы при обратном появлении небыло глюка чтоб постоянно когда он заного возле объекта появлялся и все заного крутилось) вот я загрузил свою игру на летитбит....скачайте плиз и кто может измените и наглядный пример покажите.....а то в словах Цикл и Функции я плохо шарю мне проще понять на практике Вот ссылка на мою игру: http://www.letitbit.ru/files/32694/vse_3d_modeli_tut.rar Буду очень признателен! я уже 3 неделю бьюсь над этим вопросом и ничего неполучаеться
|
|
| |
Virusss | Дата: Понедельник, 19.04.2010, 07:23 | Сообщение # 2 |
Подполковник
Группа: Пользователи
Сообщений: 412
Награды: 2
Репутация: 5
Статус: Offline
| Я скачал, пару раз запустил но нефига не понял...чего ваш робот должеш каснутся??? там куча елок и звезд, еще цилиндры креатятся, но их даже не видать... P.S. И можете поподробней разьяснить что вы хотите от загружаемого файла, а то все как то поверхностно...
|
|
| |
ParisHilton | Дата: Понедельник, 19.04.2010, 09:57 | Сообщение # 3 |
прогер
Группа: Пользователи
Сообщений: 197
Награды: 2
Репутация: 5
Статус: Offline
| Вычислить расстояние между двумя объектами в 3D пространстве можно по следующей функции Code Sqr((EntityX(mesh1)-EntityX(mesh2) )^2+(EntityY(mesh1)-EntityY(mesh2) )^2+(EntityZ(mesh1)-EntityZ(mesh2) Следующая строка не понятна ибо написана ерунда Quote чтобы после этого действия включался другой файл блитза Так никто не делает, нужно входить в новый цыкл (напр, Repeat... until), который отрабатывает, завершается и происходит переход к циклу предыдущему. В этот вложенный цикл можно поместить как бы еще одну игру или напр, игровое меню. Нужно, только, не забыть обнулять все переменные.
Мы ищем предмет цели для того чтобы найти результаты его следствия
|
|
| |
ЯлюблюЕЕ | Дата: Понедельник, 19.04.2010, 17:07 | Сообщение # 4 |
ламер
Группа: Пользователи
Сообщений: 20
Награды: 0
Репутация: 0
Статус: Offline
| ну в моей игре пока нету объектов.....ну создам я например в этом лесу кубик....ну так вот мне нужно что бы этот РОБОТ подошел к этому кубику и загрузилась новый проект Блитза а после окончания проекта того блитза мне нужно что бы обратно все возвратилось и он появился у кубика этого и так далее.......возле каждого кубика по всему лесу.... P.S. вообще будут не кубики а 3д объекты по всему лесу Игра моя обучающая по всему лесу будут расставлены буквы алфавита.....при подходе к одной букве нужно загрузить другую сцену где будит проигрываться этот анимированный робот и звук ( ну типо Это буква А на эту букву начинаються слова Арбуз Ананас и тд) ну вот эта сцена проиграла и робот обратно возвращаеться на то место возле этой буквы.....А букв 33 Добавлено (19.04.2010, 17:07) --------------------------------------------- или может так понятней будит....мне нужна функция или например условие такого типа ЕСЛИ <объект1 находиться в радиусе действия объекта2> ТО <загрузить файл *.bb> и обратно ЕСЛИ <закончилось действие файла *.bb> ТО <вернуть объект1 на позицию до начала предыдущего условия> Ну вы конечно больше меня знаете но это просто мои соображения.....может быть в них что то толковое есть.... P.S. если неможете помочь то скажите плиз об этом чтоб я не ждал=)
Сообщение отредактировал ЯлюблюЕЕ - Понедельник, 19.04.2010, 11:24 |
|
| |
Spidy | Дата: Понедельник, 19.04.2010, 17:48 | Сообщение # 5 |
Полковник
Группа: Модераторы
Сообщений: 339
Награды: 6
Репутация: 13
Статус: Offline
| схематично должно быть так Code Include "file2.bb" ; подключаемый файл где будет находиться второй игровой цикл
Graphics3D 800,600, 32
UPS=60 period=1000/UPS time=MilliSecs()-period
; создание объектов
; основной цикл While Not KeyHit(1)
if Sqr((EntityX(mesh1)-EntityX(mesh2) )^2+(EntityY(mesh1)-EntityY(mesh2) )^2+(EntityZ(mesh1)-EntityZ(mesh2) < 10 then New_cycle() ; функция, находящаяся в теле файла file2.bb ; если робот стоит рядом запускается функция с новым циклом, после его отрабртки происходит возврат в ; основной игровой цикл
Wend Файл file2.bb Code Function New_cycle()
Graphics3D 800,600, 32
UPS=60 period=1000/UPS time=MilliSecs()-period
; создание объектов
; второстепенный цикл While Not KeyHit(1)
; обработка
Wend
End function
Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
|
|
| |
ЯлюблюЕЕ | Дата: Понедельник, 19.04.2010, 20:36 | Сообщение # 6 |
ламер
Группа: Пользователи
Сообщений: 20
Награды: 0
Репутация: 0
Статус: Offline
| Хихи....у меня теперь скриншоты получились=) теперь когда я нажимаю KeyDown(1) у меня появляеться картинка.......и дальше недвижеться пока я ненчну бегать роботом и нажимать Esc.... кароче без нажатия Esc ничего непоказывает а при нажатии делает кагбудто скрин ну вот еще попробовал че то изменить теперь получилось......но проблема я подбегаю к объекту и мне нужно прыгнуть ему на макушку только чтоб включилась другая сцена.....и то она включаеться но показывает только черный экран(а я загрзуил просто плоскоть и текстуру) и после нажатия клавиши она невозвращает ту сцену с лесом и роботом.... да может я дурачек=) ну объясните ламеру=)
Сообщение отредактировал ЯлюблюЕЕ - Понедельник, 19.04.2010, 20:52 |
|
| |
ParisHilton | Дата: Вторник, 20.04.2010, 15:31 | Сообщение # 7 |
прогер
Группа: Пользователи
Сообщений: 197
Награды: 2
Репутация: 5
Статус: Offline
| Давай код в студию, старперы помогут разобраться
Мы ищем предмет цели для того чтобы найти результаты его следствия
|
|
| |
ЯлюблюЕЕ | Дата: Вторник, 20.04.2010, 20:12 | Сообщение # 8 |
ламер
Группа: Пользователи
Сообщений: 20
Награды: 0
Репутация: 0
Статус: Offline
| вот вся моя игра: http://www.letitbit.ru/files/32694/vse_3d_modeli_tut.rar а код тут....я незнаю что куда втыкать может и в этом проблема.....это моя дипломная и мне ее надо здать до 28 числа этого месяца=) мне просто очень это интересно поэтому делаю=)ну или пытаюсь делать+) если что могу еще поподробней объяснить что мне нужно если непонятно объяснил=) Code Graphics3D 1024,768,32,0
Global camerapiv = CreatePivot() Global cam = CreateCamera(camerapiv) PositionEntity cam,0,30,50 PointEntity cam, camerapiv
l = CreateLight() RotateEntity l, 0, 45, 45
ground = CreatePlane() PositionEntity ground, 0, -8, 0 ;opustili ploskost' na -8 grass = LoadTexture("C:\media\terrain-1.jpg") ScaleTexture grass, 50, 50 ; uvelichenie teksturi EntityTexture ground, grass ;privyazka teksturi k ploskosti
fir = CreatePivot() c1 = CreateCone(20, 1, fir) ScaleEntity c1, 5, 5, 5 EntityColor c1, 0, 255, 0 c2 = CreateCone(20, 1, fir) ScaleEntity c2, 4, 4, 4 PositionEntity c2, 0, 4, 0 EntityColor c2, 0, 255, 0 c3 = CreateCone(20, 1, fir) ScaleEntity c3, 3, 3, 3 PositionEntity c3, 0, 7, 0 EntityColor c3, 0, 255, 0 c4 = CreateCone(20, 1, fir) ScaleEntity c4, 2, 2, 2 PositionEntity c4, 0, 10, 0 EntityColor c4, 0, 255, 0 cyl = CreateCylinder(20, 1, fir) PositionEntity cyl, 0, -6, 0 ScaleEntity cyl, 2, 2, 2 EntityColor cyl, 170, 130, 30
moss = LoadTexture("C:\media\moss.bmp") EntityTexture c1, moss EntityTexture c2, moss EntityTexture c3, moss EntityTexture c4, moss
wood = LoadTexture("C:\media\lmap_256.bmp") EntityTexture cyl, wood For x = 1 To 200 fir2 = CopyEntity(fir) PositionEntity fir2, Rnd(-500,500), 0, Rnd(1, 500) Next
star=LoadSprite("C:\media\star.bmp") ScaleSprite star, 3, 3 For x = 1 To 200 star2 = CopyEntity(star) PositionEntity star2, Rnd(-400, 400), Rnd(20, 50), Rnd(1, 500) Next
robot = LoadAnimMesh( "C:\media\robot1.3ds" ) LoadAnimSeq robot, "C:\media\run.3ds" ScaleEntity robot, 0.2, 0.2, 0.2
rx# = 10 ry# = -8 rz# = 0 dy# = 0 ang = 90
Repeat
Добавлено (20.04.2010, 20:12) --------------------------------------------- продолжение...... Code
PositionEntity robot, rx#, ry#, rz# PointEntity cam, robot RotateEntity robot, 0, ang + 90, 0
If KeyDown(57) Then If ry# = -8 Then dy# = 2 End If ry# = ry# + dy# dy# = dy# - 0.1 If ry# < -8 Then ry# = -8: dy# = 0
If KeyDown(200) If AnimSeq(robot) = 0 Then Animate robot, 1, 0.5, 1, 10 rx# = rx# + Cos(ang) * 0.4 rz# = rz# + Sin(ang) * 0.4 Else If AnimSeq(robot)=1 Then Animate robot, 2, 1, 0, 10 End If If KeyDown(203) Then ang = ang + 5 If KeyDown (205) Then ang = ang - 5 If KeyDown(1) Then Exit
PositionEntity camerapiv,EntityX(robot),EntityY(robot),EntityZ(robot) RotateEntity camerapiv,0,EntityYaw#(robot),0 MoveEntity cam, 0,0,MouseZSpeed()*4
UpdateWorld RenderWorld Flip Forever
|
|
| |
Spidy | Дата: Среда, 21.04.2010, 10:25 | Сообщение # 9 |
Полковник
Группа: Модераторы
Сообщений: 339
Награды: 6
Репутация: 13
Статус: Offline
| Держи часть 1 Quote ; вместо буквы нужно подбегать роботом к красному квадрату, после отработки ; нового окна кубик переместится Global camerapiv, c, cam, robot Load_world() ; функция загрузки мира rx# = 10 ry# = -8 rz# = 0 dy# = 0 ang = 90 Repeat PositionEntity robot, rx#, ry#, rz# PointEntity cam, robot RotateEntity robot, 0, ang + 90, 0 If KeyDown(57) Then If ry# = -8 Then dy# = 2 End If ry# = ry# + dy# dy# = dy# - 0.1 If ry# < -8 Then ry# = -8: dy# = 0 If KeyDown(200) If AnimSeq(robot) = 0 Then Animate robot, 1, 0.5, 1, 10 rx# = rx# + Cos(ang) * 0.9 rz# = rz# + Sin(ang) * 0.9 Else If AnimSeq(robot)=1 Then Animate robot, 2, 1, 0, 10 End If If KeyDown(203) Then ang = ang + 5 If KeyDown (205) Then ang = ang - 5 If KeyDown(1) Then Exit PositionEntity camerapiv,EntityX(robot),EntityY(robot),EntityZ(robot) RotateEntity camerapiv,0,EntityYaw#(robot),0 MoveEntity cam, 0,0,MouseZSpeed()*4 dst = Sqr((EntityX©-EntityX(robot) )^2+(EntityY©-EntityY(robot) )^2+(EntityZ©-EntityZ(robot))) If dst< 10 Then New_cycle() ; проверка дистанции UpdateWorld RenderWorld Text 10,10,"Distance: "+ dst Flip Forever
Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
|
|
| |
Spidy | Дата: Среда, 21.04.2010, 10:26 | Сообщение # 10 |
Полковник
Группа: Модераторы
Сообщений: 339
Награды: 6
Репутация: 13
Статус: Offline
| Держи часть 2 Quote Function Load_world() Graphics3D 1024,768,32,0 camerapiv = CreatePivot() SetFont LoadFont("Arial",24) cam = CreateCamera(camerapiv) PositionEntity cam,0,30,50 PointEntity cam, camerapiv l = CreateLight() RotateEntity l, 0, 45, 45 ground = CreatePlane() PositionEntity ground, 0, -8, 0 ;opustili ploskost' na -8 grass = LoadTexture("C:\media\terrain-1.jpg") ScaleTexture grass, 50, 50 ; uvelichenie teksturi EntityTexture ground, grass ;privyazka teksturi k ploskosti fir = CreatePivot() c1 = CreateCone(20, 1, fir) ScaleEntity c1, 5, 5, 5 EntityColor c1, 0, 255, 0 c2 = CreateCone(20, 1, fir) ScaleEntity c2, 4, 4, 4 PositionEntity c2, 0, 4, 0 EntityColor c2, 0, 255, 0 c3 = CreateCone(20, 1, fir) ScaleEntity c3, 3, 3, 3 PositionEntity c3, 0, 7, 0 EntityColor c3, 0, 255, 0 c4 = CreateCone(20, 1, fir) ScaleEntity c4, 2, 2, 2 PositionEntity c4, 0, 10, 0 EntityColor c4, 0, 255, 0 cyl = CreateCylinder(20, 1, fir) PositionEntity cyl, 0, -6, 0 ScaleEntity cyl, 2, 2, 2 EntityColor cyl, 170, 130, 30 moss = LoadTexture("C:\media\moss.bmp") EntityTexture c1, moss EntityTexture c2, moss EntityTexture c3, moss EntityTexture c4, moss wood = LoadTexture("C:\media\lmap_256.bmp") EntityTexture cyl, wood For x = 1 To 200 fir2 = CopyEntity(fir) PositionEntity fir2, Rnd(-500,500), 0, Rnd(1, 500) Next star=LoadSprite("C:\media\star.bmp") ScaleSprite star, 3, 3 For x = 1 To 200 star2 = CopyEntity(star) PositionEntity star2, Rnd(-400, 400), Rnd(20, 50), Rnd(1, 500) Next robot = LoadAnimMesh( "C:\media\robot1.3ds" ) LoadAnimSeq robot, "C:\media\run.3ds" ScaleEntity robot, 0.2, 0.2, 0.2 c = CreateCube() ScaleEntity c,5,5,5 EntityColor c,255,0,128 PositionEntity c,30,0,40 rx# = 10 ry# = -8 rz# = 0 dy# = 0 ang = 90 End Function
Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
|
|
| |
|