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

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

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

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

Ответ
 
Опции темы
Старый 17.02.2011, 19:40   #1
}{@KeR
ПроЭктировщик
 
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений
(для 8 пользователей)
Вопрос Управление камерой:

Graphics3D 1024,768,32,2
SetBuffer BackBuffer
()

l=CreateLight()
c=CreateCamera()
TurnEntity c,45,0,0
MoveEntity c
,0,100,0
CreateWorld
()

Repeat
If KeyDown(30Then MoveEntity c,-1,0,0
If KeyDown(32Then MoveEntity c,1,0,0
If KeyDown(31Then MoveEntity c,0,0,-1
If KeyDown(17Then MoveEntity c,0,0,


RenderWorld
()
Flip()
Until KeyHit(1)
End 

Function CreateWorld()
        
wtex=CreateTexture(256,256)
        
SetBuffer TextureBuffer(wtex)
        
Color 10,100,10
        Rect  15
,15,226,226
        SetBuffer BackBuffer
()
        
ScaleTexture wtex,10,10
        plane
=CreatePlane()
        
EntityTexture plane,wtex
        EntityType plane
,poltype
        EntityPickMode plane
,2,1
        FreeTexture wtex
End 
Function 
Видите TurnEntity c,45,0,0
Когда камера наклонена на х=45 то если нажать клавишу W(вперёд) то камера летит под plain ....как сделать чтобы она летала ровно....словно без TurnEntity
(Offline)
 
Ответить с цитированием
Старый 17.02.2011, 19:46   #2
EvilChaotic
Мастер
 
Аватар для EvilChaotic
 
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений
(для 3,006 пользователей)
Ответ: Управление камерой:

TranslateEntity.
__________________

EvilChaotic About
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
}{@KeR (17.02.2011)
Старый 17.02.2011, 20:11   #3
}{@KeR
ПроЭктировщик
 
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений
(для 8 пользователей)
Ответ: Управление камерой:

Ещё пару вопросиков

1.как теперь также реализовать с поворотом камеры влево и вправо?
2.Как на колёсик мышки приближать и отдалять?
(Offline)
 
Ответить с цитированием
Старый 17.02.2011, 20:33   #4
}{@KeR
ПроЭктировщик
 
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений
(для 8 пользователей)
Ответ: Управление камерой:

Вот сделал что объект выделяется рамкой и куда нажмёшь(ПКМ) туда и двигается.....если (ЛКМ) то сбрасывается
но всёравно как-то коряво.....помогите пожалуйста
Например если рамка проходит центр куба то он всёравно выделяется


Graphics3D 1024,768,32,2


CreateWorld
()

Global 
movepiv
Global centpiv
Global campiv
Global camera
Global mic
Global speed#
Global deltaT
Global userTime
Global newTime
Global wLog

Global f_key=17
Global b_key=31
Global l_key=30
Global r_key=32

Global CubSelect 
Global Ramkax1Ramkay1,Ramkax2Ramkay2

Const  playertype=1,poltype=2

CreatePlayer
(600,3,-600)

cub=CreateCube()
ScaleEntity cub,2,4,2
;CameraProject(camera,EntityX(cub),EntityY(cub),EntityZ(cub))



Repeat

        dvigok
()
        
        
PositionEntity cub,EntityX#(movepiv,1),EntityY#(movepiv,1),EntityZ#(movepiv,1)
        
RotateEntity cub,0,EntityYaw(movepiv,1),0
         
        
;mouselook(camera)               
        
UpdateWorld()
        
RenderWorld()
        
Ramka()
        
Flip()
        
Until KeyHit(1)=1
End

Function CreateWorld()
        
wtex=CreateTexture(256,256)
        
SetBuffer TextureBuffer(wtex)
        
Color 10,100,10
        Rect  15
,15,226,226
        SetBuffer BackBuffer
()
        
ScaleTexture wtex,10,10
        plane
=CreatePlane()
        
EntityTexture plane,wtex
        EntityType plane
,poltype
        EntityPickMode plane
,2,1
        FreeTexture wtex
End 
Function

Function 
CreatePlayer(x#=0,y#=0,z#=0)
        
movepiv=CreatePivot() 
        
PositionEntity movepiv,x#,y#+4,z# 
        
EntityRadius movepiv,3,4.5 
        EntityType movepiv
,playertype 
        centpiv
=CreatePivot() 
        
PositionEntity centpiv,x#+4,y#+2,z#+4  
        
camera=CreateCamera() 
        
PositionEntity camera,600,100,-670 
        TurnEntity camera
,45,0,0,
        CameraClsColor camera
,10,10,150 
        mic
=CreateListener(camera,0.05,0.05,0.08
        
Collisions playertype,poltype,2,
End 
Function

Function 
dvigok()
        ;
PositionEntity campiv,EntityX#(movepiv,1),EntityY#(movepiv,1),EntityZ#(movepiv,1) 
        
If KeyHit(60Then wLog=Not wLog Wireframe wLog 
        
If userTime=0 userTime=MilliSecs() 
        
newTime=MilliSecs()  
        
deltaT=newTime-userTime 
        userTime
=newTime 
        speed
#=0.04*deltaT
 
        
If KeyDown(f_keyThen 
                TranslateEntity camera
,0,0,speed
        
Else 
                If 
KeyDown(b_keyThen TranslateEntity camera,0,0,-speed#
        
EndIf 
        If 
KeyDown(l_keyThen 
                TranslateEntity camera
,-speed#,0,0 
        
Else
                If 
KeyDown(r_keyThen TranslateEntity camera,speed#,0,0 
        
EndIf
  
         
        
CameraPick camera,MouseX(),MouseY() 
        
                ;If 
MouseHit(2)=1 Then 
                
;        PositionEntity centpiv,PickedX#(),PickedY#()+2,PickedZ#()  
                
;EndIf 
        
        If 
EntityDistance(movepiv,centpiv)>3 Then 
                PointEntity movepiv
,centpiv 
                MoveEntity movepiv
,0,0,speed
        
EndIf 
        
TranslateEntity movepiv,0,-1,
End 
Function

Function 
Ramka() 
    If 
MouseHit(1Then  
        Ramkax1
=MouseX() 
        
Ramkay1=MouseY() 
    EndIf  
    If 
MouseDown(1Then 
        Color 0
,200,
        Ramkax2
=MouseX() 
        
Ramkay2=MouseY() 
        
Line Ramkax1,Ramkay1,Ramkax2,Ramkay1 
        Line Ramkax1
,Ramkay2,Ramkax2,Ramkay2 
        Line Ramkax1
,Ramkay1,Ramkax1,Ramkay2 
        Line Ramkax2
,Ramkay1,Ramkax2,Ramkay2 
          
        
If Ramkax1>Ramkax2 Then  
            Ram1x
=Ramkax1 
            Ram2x
=Ramkax2 
        
Else 
            
Ram1x=Ramkax2 
            Ram2x
=Ramkax1 
        
EndIf 
         
        If 
Ramkay1>Ramkay2 Then  
            Ram1y
=Ramkay1 
            Ram2y
=Ramkay2 
        
Else 
            
Ram1y=Ramkay2 
            Ram2y
=Ramkay1 
        
EndIf  
         
        If (
GraphicsWidth()*0.5<Ram1x And GraphicsWidth()/0.5>Ram2x)
           ; 
EntityAlpha cub,1
            CubSelect
=True 
        
Else 
           ; 
EntityColor cub,255,255,255 
            CubSelect
=False 
        
EndIf 
    Else 
        
Ramkax1=MouseX() 
        
Ramkay1=MouseY() 
         
        If 
CubSelect=True 
            
;EntityColor cub,255,100,100 
       
Else 
            ;
EntityColor cub,255,255,255
        
EndIf 
    EndIf
        
        If 
CubSelect=True Then 
           
If MouseHit(2)=1 Then 
                PositionEntity centpiv
,PickedX#(),PickedY#()+2,PickedZ#()  
           
EndIf 
        EndIf                   
End Function 
Ещё вот: (Что не так?)
If MouseZSpeed()=1 Then
MoveEntity camera
,0,0,3
ElseIf MouseZSpeed()=-1 Then
MoveEntity camera
,0,0,-3
EndIf 

Последний раз редактировалось }{@KeR, 18.02.2011 в 12:50.
(Offline)
 
Ответить с цитированием
Старый 17.02.2011, 23:11   #5
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Управление камерой:

1. создаешь ПИВОТ, привязываешь камеру к нему, наклоняешь камеру на нужный угол, распологаешь на нужной высоте. когда нужно повернуть камеру - крутиш пивот.
2. Двигаешь КАМЕРУ по оси Z. MouseZSpeed в помощь

+ почитай книгу Роберта Мартина "Чистый код"
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
}{@KeR (18.02.2011)
Старый 18.02.2011, 01:26   #6
Leowey
Знающий
 
Аватар для Leowey
 
Регистрация: 08.11.2010
Адрес: Москва
Сообщений: 285
Написано 78 полезных сообщений
(для 182 пользователей)
Ответ: Управление камерой:

mr.DIMAS, золотые слова...


}{@KeR, на заметку: Если ты собираешься использовать в своём проекте физикс, то тебе потребуется физическая - капсульная модель игрока.
На, кури! http://forum.boolean.name/showthread...566#post105566
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
}{@KeR (18.02.2011)
Старый 18.02.2011, 12:52   #7
}{@KeR
ПроЭктировщик
 
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений
(для 8 пользователей)
Ответ: Управление камерой:

Если что , то свой вопрос я всё время обновляю
(Offline)
 
Ответить с цитированием
Старый 18.02.2011, 15:47   #8
}{@KeR
ПроЭктировщик
 
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений
(для 8 пользователей)
Ответ: Управление камерой:

Как сделать чтобы Image всегда было радо с объектом??
(Offline)
 
Ответить с цитированием
Старый 18.02.2011, 17:05   #9
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Управление камерой:

Как то так
CameraProject camera,EntityX (entity),EntityY (entity),EntityZ (entity)
DrawImage image,ProjectedX (),ProjectedZ ()
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
}{@KeR (18.02.2011)
Старый 18.02.2011, 17:23   #10
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Управление камерой:

только не так!!! это тормозно( Юниты -> UP. FPS -> DOWN ) . загружаешь image как текстуру, создаешь квад ( или спрайт ), привязываешь к объекту, натягиваешь текстуру. если квад - то юзай PointEntity. Если спрайт - он сам поворачивается к камере )). В общем, лучше 2д графику блица сразу в топку отправить - уж очень медленная. Лучше квадами с текстурами
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
}{@KeR (18.02.2011)
Старый 18.02.2011, 19:14   #11
}{@KeR
ПроЭктировщик
 
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений
(для 8 пользователей)
Ответ: Управление камерой:

Я просто хочу выбирать объекты рамкой через ImagesCollide....больше у мя ни как неполучается выбирать
(Offline)
 
Ответить с цитированием
Старый 18.02.2011, 19:30   #12
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Управление камерой:

оу щит, порой по форуму. тем таких поднималось много. сам выделение рамкой не делал - по-этому ничего сказать не могу
__________________

(Offline)
 
Ответить с цитированием
Старый 18.02.2011, 19:33   #13
}{@KeR
ПроЭктировщик
 
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений
(для 8 пользователей)
Ответ: Управление камерой:

Сообщение от mr.DIMAS Посмотреть сообщение
оу щит, порой по форуму. тем таких поднималось много. сам выделение рамкой не делал - по-этому ничего сказать не могу
Искал уже.....точто надо не нашёл
Всёравно спасибо
(Offline)
 
Ответить с цитированием
Старый 18.02.2011, 22:35   #14
Alex_Noc
Разработчик
 
Регистрация: 02.04.2007
Сообщений: 353
Написано 54 полезных сообщений
(для 289 пользователей)
Ответ: Управление камерой:

нууу, может я смогу помоч теоретикой %) , кароч:
Как тебе нужно выделение чтоб рисовалось? На экране квадрат вид спереди или на поверхности в перспективе?
(Offline)
 
Ответить с цитированием
Старый 19.02.2011, 07:49   #15
}{@KeR
ПроЭктировщик
 
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений
(для 8 пользователей)
Ответ: Управление камерой:

Сообщение от Alex_Noc Посмотреть сообщение
нууу, может я смогу помоч теоретикой %) , кароч:
Как тебе нужно выделение чтоб рисовалось? На экране квадрат вид спереди или на поверхности в перспективе?
1.Мне нужно выделить объект(юнит)-рамкой
2.потом чтобы нажать куда-нить на свободном месте от объект и сам этот объект деактивировался

Короче так....как в стратегиях бывает!!!!!!!!!!!!!!!
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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