|
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, время: 12:14.
|