|
3D-программирование Вопросы, касающиеся программирования 3D мира |
19.02.2011, 11:30
|
#16
|
ПроЭктировщик
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений (для 8 пользователей)
|
Ответ: Управление камерой:
Почуму кубик не двигается???
Graphics3D 1024,768,32,2 SetBuffer BackBuffer() ;///////// Type /////// Type unit Field ent,sel End Type Global movepiv Global celpiv Global cam Global pick ;////////End Type /////// cam=CreateCamera() PositionEntity cam,0,60,0 RotateEntity cam,60,0,0 p=CreatePlane() EntityColor p,0,128,0 CreatePlayer(-50,3,65) Local ox#,oy#,cx#,cy#,tx#,ty# While Not KeyDown(1) Dvijenie() If MouseX()<5 Then TranslateEntity cam,-0.5,0,0 If MouseX()>1020 Then TranslateEntity cam,0.5,0,0 If MouseY()<5 Then TranslateEntity cam,0,0,0.5 If MouseY()>766 Then TranslateEntity cam,0,0,-0.5 For u.unit=Each unit If u\sel=1 Then EntityColor u\ent,255,255,0 Else EntityColor u\ent,0,0,120 Next RenderWorld If MouseDown(1) cx#=MouseX() cy#=MouseY() If ox>cx Then minx=cx:maxx=ox Else minx=ox:maxx=cx If oy>cy Then miny=cy:maxy=oy Else miny=oy:maxy=cy Rect minx,miny,maxx-minx,maxy-miny,0 For u.unit=Each unit CameraProject(cam,EntityX(u\ent),EntityY(u\ent),EntityZ(u\ent)) If ProjectedX()>minx And ProjectedX()<maxx And ProjectedY()>miny And ProjectedY()<maxy Then u\sel=1 Else u\sel=0 Next Else ox#=MouseX() oy#=MouseY() EndIf Oval MouseX()-3,MouseY()-3,5,5,0 Flip Wend End Function CreatePlayer(x#=0,y#=0,z#=0) u.unit=New unit u\ent=CreateCube() PositionEntity u\ent,x#,y#,z# u\sel=0 movepiv=CreatePivot() PositionEntity movepiv,x#,y#+4,z# celpiv=CreatePivot() PositionEntity celpiv,x#+4,y#+2,z#+4 End Function Function Dvijenie() pick=CameraPick(cam,MouseX(),MouseY()) For u.unit=Each unit If u\sel=1 Then If MouseHit(2)=1 Then PositionEntity celpiv,PickedX#(),PickedY#()+2,PickedZ#() EndIf EndIf Next If EntityDistance(movepiv,celpiv)>3 Then PointEntity movepiv,celpiv MoveEntity movepiv,0,0,1 EndIf End Function
Последний раз редактировалось }{@KeR, 19.02.2011 в 13:46.
|
(Offline)
|
|
19.02.2011, 15:18
|
#17
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Управление камерой:
;///////// Type /////// Type unit Field ent,sel End Type Global movepiv Global celpiv Global cam Global pick
Щито?
по идее у каждого юнита должна быть своя точка, куда идти. Т.о. имеем:
Global Camera = 0
Global CameraPickedEntity = 0
Type Unit
Field Entity
Field WayPoint
Field isSelected%
End Type
Function MoveUnitsToTheirWaypoints()
For U.Unit = each Unit
PointEntity u\entity,u\waypoint
MoveEntity u\entity,0,0,0.1
Next
End function
Function SelectUnitAndMoveToPointWhereClicked()
CameraPickedEntity = CameraPick( Camera, MouseX(), MouseY() )
For u.unit = each unit
if CameraPickedEntity = u\entity then
u\isSelected = Not(u\isSelected)
end if
If u\isSelected = true then
PositionEntity u\WayPoint, PickedX(), PickedY(), PickedZ()
end if
next
End function
И еще ОГРОМНЫЙ ВОПРОС - почему тег php режет \ ?
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.02.2011, 15:54
|
#18
|
ПроЭктировщик
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений (для 8 пользователей)
|
Ответ: Управление камерой:
А тут скажи что не так ....выделить выделяется но не передвигается
Graphics3D 1024,768,32,2 SetBuffer BackBuffer() 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 Global pick,cub Global ox#,oy#,cx#,cy#,tx#,ty# Const playertype=1,poltype=2 CreatePlayer(0,3,0) cub=CreateCube() ScaleEntity cub,2,4,2 ;CameraProject(camera,EntityX(cub),EntityY(cub),EntityZ(cub)) Repeat If MouseX()<5 Then TranslateEntity camera,-0.5,0,0 If MouseX()>1000 Then TranslateEntity camera,0.5,0,0 If MouseY()<5 Then TranslateEntity camera,0,0,0.5 If MouseY()>766 Then TranslateEntity camera,0,0,-0.5 dvigok() PositionEntity cub,EntityX#(movepiv,1),EntityY#(movepiv,1),EntityZ#(movepiv,1) RotateEntity cub,0,EntityYaw(movepiv,1),0 ;mouselook(camera) UpdateWorld() RenderWorld() Ramka() If sel=1 Then If MouseHit(2) Then PositionEntity centpiv,PickedX#(),PickedY#()+2,PickedZ#() EndIf EndIf 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,0,100,-70 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 pick=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,1 EndIf TranslateEntity movepiv,0,-1,0 End Function Function Ramka() If MouseDown(1) cx#=MouseX() cy#=MouseY() If ox>cx Then minx=cx:maxx=ox Else minx=ox:maxx=cx If oy>cy Then miny=cy:maxy=oy Else miny=oy:maxy=cy Rect minx,miny,maxx-minx,maxy-miny,0 CameraProject(camera,EntityX(cub),EntityY(cub),EntityZ(cub)) If ProjectedX()>minx And ProjectedX()<maxx And ProjectedY()>miny And ProjectedY()<maxy Then sel=1 Else sel=0 If sel=1 Then EntityColor cub,255,255,0 Else EntityColor cub,0,0,0 EndIf Else ox#=MouseX() oy#=MouseY() EndIf Oval MouseX()-3,MouseY()-3,5,5,0 End Function
__________________
Ученье свет, а не ученье тень!
|
(Offline)
|
|
19.02.2011, 16:07
|
#19
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Управление камерой:
; If MouseHit(2)=1 Then ; PositionEntity centpiv,PickedX#(),PickedY#()+2,PickedZ#() ;EndIf
раскомментируй- все пашет
__________________
|
(Offline)
|
|
19.02.2011, 16:09
|
#20
|
ПроЭктировщик
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений (для 8 пользователей)
|
Ответ: Управление камерой:
Надо чтобы двигался когда выделишь рамкой
__________________
Ученье свет, а не ученье тень!
|
(Offline)
|
|
19.02.2011, 16:10
|
#21
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Управление камерой:
чочочочочочочоччоччочо?
надо условие ставить
If Sel = 1 then
тыры-пыры
__________________
|
(Offline)
|
|
19.02.2011, 16:11
|
#22
|
ПроЭктировщик
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений (для 8 пользователей)
|
Ответ: Управление камерой:
Ну не пашет почему-то
__________________
Ученье свет, а не ученье тень!
|
(Offline)
|
|
19.02.2011, 16:13
|
#23
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Управление камерой:
щас пороюсь в навозе. может решу "проблему"
__________________
|
(Offline)
|
|
19.02.2011, 16:16
|
#24
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Управление камерой:
Graphics3D 1024,768,32,2 SetBuffer BackBuffer() 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 = 0 Global Ramkax1, Ramkay1,Ramkax2, Ramkay2 Global pick,cub Global ox#,oy#,cx#,cy#,tx#,ty# Const playertype=1,poltype=2 CreatePlayer(0,3,0) cub=CreateCube() ScaleEntity cub,2,4,2 ;CameraProject(camera,EntityX(cub),EntityY(cub),EntityZ(cub)) Repeat If MouseX()<5 Then TranslateEntity camera,-0.5,0,0 If MouseX()>1000 Then TranslateEntity camera,0.5,0,0 If MouseY()<5 Then TranslateEntity camera,0,0,0.5 If MouseY()>766 Then TranslateEntity camera,0,0,-0.5 dvigok() PositionEntity cub,EntityX#(movepiv,1),EntityY#(movepiv,1),EntityZ#(movepiv,1) RotateEntity cub,0,EntityYaw(movepiv,1),0 ;mouselook(camera) UpdateWorld() RenderWorld() Ramka() If sel=1 Then If MouseHit(2) Then PositionEntity centpiv,PickedX#(),PickedY#()+2,PickedZ#() EndIf EndIf 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,0,100,-70 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 pick=CameraPick(camera,MouseX(),MouseY()) If CubSelect = 1 Then If MouseHit(2)=1 Then PositionEntity centpiv,PickedX#(),PickedY#()+2,PickedZ#() EndIf End If If EntityDistance(movepiv,centpiv)>3 Then PointEntity movepiv,centpiv MoveEntity movepiv,0,0,1 EndIf TranslateEntity movepiv,0,-1,0 End Function Function Ramka() If MouseDown(1) cx#=MouseX() cy#=MouseY() If ox>cx Then minx=cx:maxx=ox Else minx=ox:maxx=cx If oy>cy Then miny=cy:maxy=oy Else miny=oy:maxy=cy Rect minx,miny,maxx-minx,maxy-miny,0 CameraProject(camera,EntityX(cub),EntityY(cub),EntityZ(cub)) If ProjectedX()>minx And ProjectedX()<maxx And ProjectedY()>miny And ProjectedY()<maxy Then Sel = Not sel CubSelect = 1 End If If sel=1 Then EntityColor cub,255,255,0 Else EntityColor cub,0,0,0 CubSelect = 0 EndIf Else ox#=MouseX() oy#=MouseY() EndIf Oval MouseX()-3,MouseY()-3,5,5,0 End Function
робит
зы. код чрезвычайно убог
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.02.2011, 16:21
|
#25
|
ПроЭктировщик
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений (для 8 пользователей)
|
Ответ: Управление камерой:
А можешь так же написать для того примера где дофига кубиков
__________________
Ученье свет, а не ученье тень!
|
(Offline)
|
|
19.02.2011, 16:23
|
#26
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Управление камерой:
Минутку
__________________
|
(Offline)
|
|
19.02.2011, 16:47
|
#27
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Управление камерой:
Вот. Игру успел написать ))))))))))))
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.02.2011, 16:52
|
#28
|
ПроЭктировщик
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений (для 8 пользователей)
|
Ответ: Управление камерой:
Дааа прикольно....только они не рамкой выделяются
__________________
Ученье свет, а не ученье тень!
|
(Offline)
|
|
19.02.2011, 16:54
|
#29
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Ответ: Управление камерой:
ну блин сам прикрути
__________________
|
(Offline)
|
|
19.02.2011, 16:54
|
#30
|
ПроЭктировщик
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений (для 8 пользователей)
|
Ответ: Управление камерой:
Я щас это и делаю
__________________
Ученье свет, а не ученье тень!
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:57.
|