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

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

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

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

Ответ
 
Опции темы
Старый 12.11.2005, 10:20   #1
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Никак не получается сделать 5 видов камер. Срочно нужна помощь

Нужен:

1) вид от 1 лица (как в практически любом action)
2) следящая камера (то есть камера сзади следит за игроком, как в 3d РГП, например), возможно двигать камеру ближе или дальше от игрока, выше или ниже(относительно игрока)
3) вид сверху ( с возможностью двигать камеру выше или ниже); при приближении камера следит за игроком.
4) так, что бы камеру можно было "оставить" на любом месте, и он следила за игроком(pointentity)
5) любая позиция камеры, настроенная игроком (к примеру с помощью мыши и клавы, потом эта настроенная камера следит за игроком) (к примеру удерживаем правую кнопу мыши и двигаем мышью, настраиваю позицию камеры выше лии ниже(вверх/вниз), ближе или дальше (вперед/назад), кнопки клавы (опционально) двигают камеру левее или правее относительно игрока.

Очень прошу помочь.
Это очень важно сделать!
Прилагаю пример. Xfighter., нам в принципе все это есть, но сложновато, что я не смог разобраться.


Global rcx#
Global rcy#
Global rcz#
Global pcx#
Global pcy#
Global pcz#

Graphics3D 800,600,32,2
SetBuffer BackBuffer()


Const typeplayer=1
Const typescene=2
Const typecamera=3


scene=CreateCube()
wall1=CreateCube()
wall2=CreateCube()
wall3=CreateCube()
wall4=CreateCube()
camera=CreateCamera()
player=CreateCube()

;------------------------------------------------;
RotateEntity camera,rcx#,rcy#,rcz#; - НАСТРОЙКИ
PositionEntity camera,pcx#,pcy#,pcz#; -НАСТРОЙКИ
PositionEntity player,25,5,20
TurnEntity camera,30,0,0
FitMesh scene,0,0,0,50,2,50
FitMesh wall1,0,2,0,2,2,50
FitMesh wall2,48,2,0,2,2,50
FitMesh wall3,0,2,0,50,2,2
FitMesh wall4,0,2,48,50,2,2
EntityColor scene ,0,255,0
EntityColor wall1,200,100,100
EntityColor wall2,200,100,100
EntityColor wall3,200,100,100
EntityColor wall4,200,100,100
EntityType scene,typescene
EntityType wall1,typescene
EntityType wall2,typescene
EntityType wall3,typescene
EntityType wall4,typescene
EntityType camera,typecamera
EntityType player,typeplayer
EntityRadius scene,.5
EntityRadius camera,5
EntityColor player,255,0,0


Collisions typeplayer,typescene,2,3


Repeat

TranslateEntity player,0,-1,0


If KeyDown(75) TurnEntity camera,0,1,0
If KeyDown(77) TurnEntity camera,0,-1,0
If KeyDown(72) TurnEntity camera,1,0,0
If KeyDown(80) TurnEntity camera,-1,0,0
If KeyDown(71) MoveEntity camera,0,0,1
If KeyDown(73) MoveEntity camera,0,0,-1
If KeyDown(200) MoveEntity player,0,0,1
If KeyDown(208) MoveEntity player,0,0,-1
If KeyDown(203)TurnEntity player,0,5,0
If KeyDown(205) TurnEntity player,0,-5,0


If KeyDown(2)
camerasrate=1
End If 

If KeyDown(3)
camerasrate=2
End If 

If KeyDown(4)
camerasrate=3
End If 

If KeyDown(5)
camerasrate=4
End If 

If KeyDown(6)
camerasrate=5
End If 

Select camerasrate


;КАМЕРА++++++++++++++++++++++++++++++++++++++++++
Case 1
End 

Case 2
End 

Case 3
End 

Case 4
End 

Case 5
End 

End Select
;КАМЕРА++++++++++++++++++++++++++++++++++++++++++

;муть;
UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End
(Offline)
 
Ответить с цитированием
Старый 12.11.2005, 16:02   #2
jimon
 
Сообщений: n/a
писать код влень, обясню как делать:
1) ставиш камеру на позицию игрока и парентиш ее к игроку
2) ставиш камеру на позицию игрока, moveentity cam,0,0,-10 и парентиш ее к игроку
3) создаеш пивот, ставиш его на позицию игрока, парентиш пиво к игроку ,ставиш камеру на позицию игрока, moveentity cam,0,height,0 ; парентиш камеру к пивоту
пивот НЕ ПОВОРАЧИВАЕШ ПРИ ДВИЖЕНИИ МЫШКИ

4) ставиш камеру где надо, и в цыкле делает pointentity ...

5) геморно, думать нестал


если непонял - спроси что непонял
 
Ответить с цитированием
Старый 12.11.2005, 20:44   #3
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Graphics3D 800,600,32,2
SetBuffer BackBuffer()


Const typeplayer=1
Const typescene=2
Const typecamera=3


scene=CreateCube()
wall1=CreateCube()
wall2=CreateCube()
wall3=CreateCube()
wall4=CreateCube()
camera=CreateCamera()
player=CreateCube()

;------------------------------------------------;

PositionEntity player,25,5,20
TurnEntity camera,30,0,0
FitMesh scene,0,0,0,50,2,50
FitMesh wall1,0,2,0,2,2,50
FitMesh wall2,48,2,0,2,2,50
FitMesh wall3,0,2,0,50,2,2
FitMesh wall4,0,2,48,50,2,2
EntityColor scene ,0,255,0
EntityColor wall1,200,100,100
EntityColor wall2,200,100,100
EntityColor wall3,200,100,100
EntityColor wall4,200,100,100
EntityType scene,typescene
EntityType wall1,typescene
EntityType wall2,typescene
EntityType wall3,typescene
EntityType wall4,typescene
EntityType camera,typecamera
EntityType player,typeplayer
EntityRadius scene,.5
EntityRadius camera,5
EntityColor player,255,0,0


Collisions typeplayer,typescene,2,3


Repeat

TranslateEntity player,0,-1,0


If KeyDown(75) TurnEntity camera,0,1,0
If KeyDown(77) TurnEntity camera,0,-1,0
If KeyDown(72) TurnEntity camera,1,0,0
If KeyDown(80) TurnEntity camera,-1,0,0
If KeyDown(71) MoveEntity camera,0,0,1
If KeyDown(73) MoveEntity camera,0,0,-1
If KeyDown(200) MoveEntity player,0,0,1
If KeyDown(208) MoveEntity player,0,0,-1
If KeyDown(203)TurnEntity player,0,5,0
If KeyDown(205) TurnEntity player,0,-5,0


If KeyDown(2)
camerasrate=1
End If 

If KeyDown(3)
camerasrate=2
End If 

If KeyDown(4)
camerasrate=3
End If 

If KeyDown(5)
camerasrate=4
End If 

If KeyDown(6)
camerasrate=5
End If 

Select camerasrate


;КАМЕРА++++++++++++++++++++++++++++++++++++++++++
Case 1
PositionEntity camera,EntityX(player),EntityY(player),EntityZ(player)
EntityParent camera, player

Case 2
End 

Case 3
End 

Case 4
End 

Case 5
End 

End Select
;КАМЕРА++++++++++++++++++++++++++++++++++++++++++

;муть;
UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End
сдела, и не вышло! Камера совсем не там, где надо!
(Offline)
 
Ответить с цитированием
Старый 12.11.2005, 21:16   #4
jimon
 
Сообщений: n/a
'чем отличается новичок от профи ?
тем что профи думает перед тем как напостить о проблемме'

ps. идинтсвеное место где я тебе сказал писать команду в цыкл ето 4 вид камеры

Graphics3D 800,600,32,2
SetBuffer BackBuffer()

Global camera
Global player

Const typeplayer=1
Const typescene=2
Const typecamera=3


scene=CreateCube()
wall1=CreateCube()
wall2=CreateCube()
wall3=CreateCube()
wall4=CreateCube()
camera=CreateCamera()
player=CreateCube()

;------------------------------------------------;

PositionEntity player,25,5,20
TurnEntity camera,30,0,0
FitMesh scene,0,0,0,50,2,50
FitMesh wall1,0,2,0,2,2,50
FitMesh wall2,48,2,0,2,2,50
FitMesh wall3,0,2,0,50,2,2
FitMesh wall4,0,2,48,50,2,2
EntityColor scene ,0,255,0
EntityColor wall1,200,100,100
EntityColor wall2,200,100,100
EntityColor wall3,200,100,100
EntityColor wall4,200,100,100
EntityType scene,typescene
EntityType wall1,typescene
EntityType wall2,typescene
EntityType wall3,typescene
EntityType wall4,typescene
EntityType camera,typecamera
EntityType player,typeplayer
EntityRadius scene,.5
EntityRadius camera,5
EntityColor player,255,0,0


Collisions typeplayer,typescene,2,3



Repeat

TranslateEntity player,0,-1,0


If KeyDown(75) TurnEntity camera,0,1,0
If KeyDown(77) TurnEntity camera,0,-1,0
If KeyDown(72) TurnEntity camera,1,0,0
If KeyDown(80) TurnEntity camera,-1,0,0
If KeyDown(71) MoveEntity camera,0,0,1
If KeyDown(73) MoveEntity camera,0,0,-1
If KeyDown(200) MoveEntity player,0,0,1
If KeyDown(208) MoveEntity player,0,0,-1
If KeyDown(203)TurnEntity player,0,5,0
If KeyDown(205) TurnEntity player,0,-5,0


If KeyHit(2) Then set_cam(1)
If KeyHit(3) Then set_cam(2)
If KeyHit(4) Then set_cam(3)
If KeyHit(5) Then set_cam(4)
If KeyHit(6) Then set_cam(5)


;ìóòü;
UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End


Function set_cam(camerasrate)
Select camerasrate

;ÊÀÌÅÐÀ++++++++++++++++++++++++++++++++++++++++++
Case 1
PositionEntity camera,EntityX(player,1),EntityY(player,1),EntityZ(player,1)
RotateEntity camera,EntityPitch(player,1),EntityYaw(player,1),EntityRoll(player,1)
EntityParent camera, player,1

Case 2
PositionEntity camera,EntityX(player,1),EntityY(player,1),EntityZ(player,1)
RotateEntity camera,EntityPitch(player,1),EntityYaw(player,1),EntityRoll(player,1)
MoveEntity camera,0,0,-10
EntityParent camera, player,1

Case 3
End 

Case 4
End 

Case 5
End 

End Select
End Function

думаю дальше уже сам поймеш
 
Ответить с цитированием
Старый 12.11.2005, 21:25   #5
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
К сожалению не работает.

Я включаю 1 вид и все путем, второй вид - и тоже пашет.

Но если я включаю сначала первый вид, а потом переключаю на второй, то получается та же муть, что и у меня. Камера где то ... но только не там, где надо(
(Offline)
 
Ответить с цитированием
Старый 12.11.2005, 21:51   #6
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Почему бы не использовать несколько камер - имхо, проще.
ТОлько projmode соответствующй им ставить.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 12.11.2005, 21:53   #7
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Проще, но я не знаю, как это сделать!

Подскажете пожалуйста! Можно по-любому сделать! Полно вариантов! Но я, к сожалению не совсем знаю, как сделать
(Offline)
 
Ответить с цитированием
Старый 12.11.2005, 21:54   #8
jimon
 
Сообщений: n/a
Case 2
EntityParent camera, player,0
PositionEntity camera,EntityX(player,1),EntityY(player,1),EntityZ(player,1)
RotateEntity camera,EntityPitch(player,1),EntityYaw(player,1),EntityRoll(player,1)
MoveEntity camera,0,0,-10
EntityParent camera, player,1
 
Ответить с цитированием
Старый 13.11.2005, 11:06   #9
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
К сожалению как все не работало, так и не работает.

Второй вид камеры вообще не там. Камера просто не видит игрока. К сожалению.

Так что, я не знаю что делать, но нужна ваша помощь.

Вопрос остается открытым
(Offline)
 
Ответить с цитированием
Старый 13.11.2005, 14:20   #10
jimon
 
Сообщений: n/a
Case 1
PositionEntity camera,EntityX(player,1),EntityY(player,1),EntityZ(player,1),1
RotateEntity camera,EntityPitch(player,1),EntityYaw(player,1),EntityRoll(player,1),1
EntityParent camera, player,1

Case 2
PositionEntity camera,EntityX(player,1),EntityY(player,1),EntityZ(player,1),1
RotateEntity camera,EntityPitch(player,1),EntityYaw(player,1),EntityRoll(player,1),1
MoveEntity camera,0,0,-10
EntityParent camera, player,1
коментарии :



я попросил бы!
 
Ответить с цитированием
Старый 13.11.2005, 15:36   #11
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Спасибо! Работает!

А к чему комментраий? "я попросил бы!"
не совсем тебя понял!
(Offline)
 
Ответить с цитированием
Старый 13.11.2005, 16:06   #12
alex-mad
Модератор
 
Регистрация: 13.09.2005
Сообщений: 1,835
Написано 6 полезных сообщений
(для 10 пользователей)
это impersonalis правил сообщение
(Offline)
 
Ответить с цитированием
Старый 13.11.2005, 17:13   #13
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Смущение

Originally posted by alex-mad@Nov 13 2005, 03:06 PM
это impersonalis правил сообщение
АГА
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 13.11.2005, 23:17   #14
jimon
 
Сообщений: n/a
impersonalis - а че ты правду скрываеш ?
 
Ответить с цитированием
Старый 23.11.2005, 21:53   #15
Fant
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 623
Написано 4 полезных сообщений
(для 5 пользователей)
Наконец-то выбрался из череды учений и вернулся к блицу!

Реально.

А у меня есть вопрос по камере!
Как настраивать я уже благодаря jimon понял!

1) Как сделать так, что бы камера плавно поворачивалась за игроком (как в примере driver или x-fighter). К сожалению примера driver нет, а xfigter слишком сложный

2) Как заставить камеру при переключении от одного вида (1,2 кнопки на клаве) плавно переходила в другой вид, а не "прыгала"

Очень прошу помочь!

Graphics3D 800,600,32,2
SetBuffer BackBuffer()

Global camera
Global player

Const typeplayer=1
Const typescene=2
Const typecamera=3


scene=CreateCube()
wall1=CreateCube()
wall2=CreateCube()
wall3=CreateCube()
wall4=CreateCube()
camera=CreateCamera()
player=CreateCube()

;------------------------------------------------;

PositionEntity player,25,5,20
TurnEntity camera,30,0,0
FitMesh scene,0,0,0,50,2,50
FitMesh wall1,0,2,0,2,2,50
FitMesh wall2,48,2,0,2,2,50
FitMesh wall3,0,2,0,50,2,2
FitMesh wall4,0,2,48,50,2,2
EntityColor scene ,0,255,0
EntityColor wall1,200,100,100
EntityColor wall2,200,100,100
EntityColor wall3,200,100,100
EntityColor wall4,200,100,100
EntityType scene,typescene
EntityType wall1,typescene
EntityType wall2,typescene
EntityType wall3,typescene
EntityType wall4,typescene
EntityType camera,typecamera
EntityType player,typeplayer
EntityRadius scene,.5
EntityColor player,255,0,0


Collisions typeplayer,typescene,2,3




Repeat

TranslateEntity player,0,-1,0


If KeyDown(75) TurnEntity camera,0,1,0
If KeyDown(77) TurnEntity camera,0,-1,0
If KeyDown(72) TurnEntity camera,1,0,0
If KeyDown(80) TurnEntity camera,-1,0,0
If KeyDown(71) MoveEntity camera,0,0,1
If KeyDown(73) MoveEntity camera,0,0,-1
If KeyDown(200) MoveEntity player,0,0,1
If KeyDown(208) MoveEntity player,0,0,-1
If KeyDown(203)TurnEntity player,0,5,0
If KeyDown(205) TurnEntity player,0,-5,0


If KeyHit(2) Then set_cam(1)
If KeyHit(3) Then set_cam(2)
If KeyHit(4) Then set_cam(3)
If KeyHit(5) Then set_cam(4)
If KeyHit(6) Then set_cam(5)


;ioou;
UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End


Function set_cam(camerasrate)
Select camerasrate

;EAIA?A++++++++++++++++++++++++++++++++++++++++++
Case 1
PositionEntity camera,EntityX(player,1),EntityY(player,1),EntityZ(player,1),1
RotateEntity camera,EntityPitch(player,1),EntityYaw(player,1),EntityRoll(player,1),1
EntityParent camera, player,1

Case 2
PositionEntity camera,EntityX(player,1),EntityY(player,1)+5,EntityZ(player,1),1
RotateEntity camera,EntityPitch(player,1)+45,EntityYaw(player,1),EntityRoll(player,1),1
MoveEntity camera,0,0,-10
EntityParent camera, player,1



Case 3
End 

Case 4
End 

Case 5
End 

End Select
End Function
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Camera pick! Fatalix3d 3D-программирование 17 01.09.2009 20:26
Camera Match Round Работы 8 19.02.2007 20:23
Camera root 3D-программирование 9 22.05.2006 18:54


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


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