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

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

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

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

Ответ
 
Опции темы
Старый 19.02.2011, 11:30   #16
}{@KeR
ПроЭктировщик
 
Регистрация: 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,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=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
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
}{@KeR (19.02.2011)
Старый 19.02.2011, 15:54   #18
}{@KeR
ПроЭктировщик
 
Регистрация: 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 Ramkax1Ramkay1,Ramkax2Ramkay2
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(2Then 
            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,
        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
  
         
        
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,
        
EndIf 
        
TranslateEntity movepiv,0,-1,

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=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
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 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
}{@KeR
ПроЭктировщик
 
Регистрация: 01.02.2011
Сообщений: 148
Написано 7 полезных сообщений
(для 8 пользователей)
Ответ: Управление камерой:

Надо чтобы двигался когда выделишь рамкой
__________________
Ученье свет, а не ученье тень!
(Offline)
 
Ответить с цитированием
Старый 19.02.2011, 16:10   #21
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Управление камерой:

чочочочочочочоччоччочо?

надо условие ставить
If Sel = 1 then
тыры-пыры
__________________

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

Ну не пашет почему-то
__________________
Ученье свет, а не ученье тень!
(Offline)
 
Ответить с цитированием
Старый 19.02.2011, 16:13   #23
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Управление камерой:

щас пороюсь в навозе. может решу "проблему"
__________________

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

Graphics3D 1024,768,32,
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 Ramkax1Ramkay1,Ramkax2Ramkay2 
Global pick,cub 
Global ox#,oy#,cx#,cy#,tx#,ty# 
Const  playertype=1,poltype=
CreatePlayer
(0,3,0
cub=CreateCube() 
ScaleEntity cub,2,4,
;CameraProject(camera,EntityX(cub),EntityY(cub),EntityZ(cub))  
 
Repeat  
 
If MouseX()<5 Then TranslateEntity camera,-0.5,0,
 
If MouseX()>1000 Then TranslateEntity camera,0.5,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),
 
        
;mouselook(camera)                
 
UpdateWorld() 
 
RenderWorld() 
 
Ramka()   
 If 
sel=1 Then  
        
If MouseHit(2Then  
            PositionEntity centpiv
,PickedX#(),PickedY#()+2,PickedZ#()   
        
EndIf       
 EndIf 
 
 
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,
 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(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 
 
 
        
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,
 
  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,
  
Else 
   
EntityColor cub,0,0,
   CubSelect 
0
  
EndIf  
 
 Else 
        
ox#=MouseX() 
        
oy#=MouseY() 
    
EndIf 
 
 
Oval MouseX()-3,MouseY()-3,5,5,0        
End 
Function 
робит

зы. код чрезвычайно убог
__________________

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

А можешь так же написать для того примера где дофига кубиков
__________________
Ученье свет, а не ученье тень!
(Offline)
 
Ответить с цитированием
Старый 19.02.2011, 16:23   #26
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Управление камерой:

Минутку
__________________

(Offline)
 
Ответить с цитированием
Старый 19.02.2011, 16:47   #27
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Управление камерой:

Вот. Игру успел написать ))))))))))))
Вложения
Тип файла: rar some.rar (1.1 Кб, 376 просмотров)
__________________

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

Дааа прикольно....только они не рамкой выделяются
__________________
Ученье свет, а не ученье тень!
(Offline)
 
Ответить с цитированием
Старый 19.02.2011, 16:54   #29
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Управление камерой:

ну блин сам прикрути
__________________

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

Я щас это и делаю
__________________
Ученье свет, а не ученье тень!
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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