 |
3D-программирование Вопросы, касающиеся программирования 3D мира |
17.02.2011, 19:40
|
#1
|
ПроЭктировщик
Регистрация: 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(30) Then MoveEntity c,-1,0,0
If KeyDown(32) Then MoveEntity c,1,0,0
If KeyDown(31) Then MoveEntity c,0,0,-1
If KeyDown(17) Then MoveEntity c,0,0,1
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
|
Мастер
Регистрация: 05.04.2008
Сообщений: 910
Написано 530 полезных сообщений (для 3,006 пользователей)
|
Ответ: Управление камерой:
TranslateEntity.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
17.02.2011, 20:11
|
#3
|
ПроЭктировщик
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений (для 8 пользователей)
|
Ответ: Управление камерой:
Ещё пару вопросиков
1.как теперь также реализовать с поворотом камеры влево и вправо?
2.Как на колёсик мышки приближать и отдалять?
|
(Offline)
|
|
17.02.2011, 20:33
|
#4
|
ПроЭктировщик
Регистрация: 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 Ramkax1, Ramkay1,Ramkax2, Ramkay2
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,1
CameraClsColor camera,10,10,150
mic=CreateListener(camera,0.05,0.05,0.08)
Collisions playertype,poltype,2,3
End Function
Function dvigok()
;PositionEntity campiv,EntityX#(movepiv,1),EntityY#(movepiv,1),EntityZ#(movepiv,1)
If KeyHit(60) Then wLog=Not wLog Wireframe wLog
If userTime=0 userTime=MilliSecs()
newTime=MilliSecs()
deltaT=newTime-userTime
userTime=newTime
speed#=0.04*deltaT
If KeyDown(f_key) Then
TranslateEntity camera,0,0,speed#
Else
If KeyDown(b_key) Then TranslateEntity camera,0,0,-speed#
EndIf
If KeyDown(l_key) Then
TranslateEntity camera,-speed#,0,0
Else
If KeyDown(r_key) Then 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,0
End Function
Function Ramka()
If MouseHit(1) Then
Ramkax1=MouseX()
Ramkay1=MouseY()
EndIf
If MouseDown(1) Then
Color 0,200,0
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
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Управление камерой:
1. создаешь ПИВОТ, привязываешь камеру к нему, наклоняешь камеру на нужный угол, распологаешь на нужной высоте. когда нужно повернуть камеру - крутиш пивот.
2. Двигаешь КАМЕРУ по оси Z. MouseZSpeed в помощь
+ почитай книгу Роберта Мартина "Чистый код"
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.02.2011, 01:26
|
#6
|
Знающий
Регистрация: 08.11.2010
Адрес: Москва
Сообщений: 285
Написано 78 полезных сообщений (для 182 пользователей)
|
Ответ: Управление камерой:
mr.DIMAS, золотые слова...
}{@KeR, на заметку: Если ты собираешься использовать в своём проекте физикс, то тебе потребуется физическая - капсульная модель игрока.
На, кури! http://forum.boolean.name/showthread...566#post105566
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.02.2011, 12:52
|
#7
|
ПроЭктировщик
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений (для 8 пользователей)
|
Ответ: Управление камерой:
Если что , то свой вопрос я всё время обновляю
|
(Offline)
|
|
18.02.2011, 15:47
|
#8
|
ПроЭктировщик
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений (для 8 пользователей)
|
Ответ: Управление камерой:
Как сделать чтобы Image всегда было радо с объектом??
|
(Offline)
|
|
18.02.2011, 17:05
|
#9
|
Гигант индустрии
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
|
Ответ: Управление камерой:
Как то так
CameraProject camera,EntityX (entity),EntityY (entity),EntityZ (entity)
DrawImage image,ProjectedX (),ProjectedZ ()
|
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.02.2011, 17:23
|
#10
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Управление камерой:
только не так!!! это тормозно( Юниты -> UP. FPS -> DOWN ) . загружаешь image как текстуру, создаешь квад ( или спрайт ), привязываешь к объекту, натягиваешь текстуру. если квад - то юзай PointEntity. Если спрайт - он сам поворачивается к камере )). В общем, лучше 2д графику блица сразу в топку отправить - уж очень медленная. Лучше квадами с текстурами
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.02.2011, 19:14
|
#11
|
ПроЭктировщик
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений (для 8 пользователей)
|
Ответ: Управление камерой:
Я просто хочу выбирать объекты рамкой через ImagesCollide....больше у мя ни как неполучается выбирать
|
(Offline)
|
|
18.02.2011, 19:30
|
#12
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Управление камерой:
оу щит, порой по форуму. тем таких поднималось много. сам выделение рамкой не делал - по-этому ничего сказать не могу
__________________
|
(Offline)
|
|
18.02.2011, 19:33
|
#13
|
ПроЭктировщик
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений (для 8 пользователей)
|
Ответ: Управление камерой:
Сообщение от mr.DIMAS
оу щит, порой по форуму. тем таких поднималось много. сам выделение рамкой не делал - по-этому ничего сказать не могу
|
Искал уже.....точто надо не нашёл
Всёравно спасибо 
|
(Offline)
|
|
18.02.2011, 22:35
|
#14
|
Разработчик
Регистрация: 02.04.2007
Сообщений: 353
Написано 54 полезных сообщений (для 289 пользователей)
|
Ответ: Управление камерой:
нууу, может я смогу помоч теоретикой %) , кароч:
Как тебе нужно выделение чтоб рисовалось? На экране квадрат вид спереди или на поверхности в перспективе?
|
(Offline)
|
|
19.02.2011, 07:49
|
#15
|
ПроЭктировщик
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений (для 8 пользователей)
|
Ответ: Управление камерой:
Сообщение от Alex_Noc
нууу, может я смогу помоч теоретикой %) , кароч:
Как тебе нужно выделение чтоб рисовалось? На экране квадрат вид спереди или на поверхности в перспективе?
|
1.Мне нужно выделить объект(юнит)-рамкой
2.потом чтобы нажать куда-нить на свободном месте от объект и сам этот объект деактивировался
Короче так....как в стратегиях бывает!!!!!!!!!!!!!!!
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:35.
|