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