[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]


  • Страница 1 из 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Модератор форума: Spidy, turBO, blitz3d  
Форум мира Blitz3D » Язык Blitz3D » 3D программирование » Насчет взаимодействия объектов и переходы на уровни (ПОМОГИТЕ!!!)
Насчет взаимодействия объектов и переходы на уровни
ЯлюблюЕЕДата: Воскресенье, 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



Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
 
Форум мира Blitz3D » Язык Blitz3D » 3D программирование » Насчет взаимодействия объектов и переходы на уровни (ПОМОГИТЕ!!!)
  • Страница 1 из 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Поиск: