Тема: Xors3D
Показать сообщение отдельно
Старый 23.08.2011, 11:33   #421
Townboy
AnyKey`щик
 
Регистрация: 11.12.2007
Сообщений: 18
Написано одно полезное сообщение
(для 0 участников)
Смущение Ответ: Xors3D

Привет! подскажите что не так ?

вот код на B3d
Global cub
Global camera
Global point
Global state$

Const 
STANDING=0
Const MOVING=1

Const moveSpeed#=.6
Const turnSpeed#=.1

Graphics3D 640,480,0,2

camera
=CreateCamera()
PositionEntity camera,0,150,0
RotateEntity camera
,90,0,0

plane
=CreateCube()
ScaleEntity plane,1000,.1,1000
EntityPickMode plane
,2
EntityColor plane
,160,150,150
EntityAlpha plane
,0.5 

point
=CreateCube()
EntityColor point,255,0,0

cub
=CreateCube()
ScaleEntity cub,5,5,5

state
$=STANDING

While Not KeyDown)
UpdateMovement()

PointEntity camera,cub
UpdateWorld
()
RenderWorld()

Text 0,40,"PickedX: "+PickedX#()
Text 0,60,"PickedY: "+PickedY#()
Text 0,80,"PickedZ: "+PickedZ#()

Flip
Wend

End

Function UpdateMovement()
    If 
MouseHit(1)
        If 
state$=STANDING 
            state
$=MOVING
        
EndIf 
        
CameraPick(camera,MouseX(),MouseY())
        
PositionEntity point,PickedX(),0,PickedZ()+3
    
    
EndIf
    If 
state$=MOVING            

             xt
#=PickedX#()
             
zt#=PickedZ#()
            
xl#=EntityX#(cub)
            
zl#=EntityZ#(cub)
             
cx#=xt-xl 
             
cz#=zt-zl 
             
cn#=Sqr(cx*cx+cz*cz) 
             
cx=cx/cn    
             cz
=cz/cn
            
            AlignToVector cub
,cx,0,cz,0,turnSpeed#
            
MoveEntity cub,0,0,moveSpeed#

            
If Distance2D(EntityX(cub),EntityZ(cub),PickedX(),PickedZ())<10
                state
$=STANDING
            
EndIf
    EndIf
End Function        

Function 
Distance2D#(x1#,y1#,x2#,y2#)
Local nx#=x1-x2
Local ny#=y1-y2 
Return Sqr((nx*nx)+(ny*ny))
End Function 
вот на Xors3D
Include "Xors3d.bb"

Global cub
Global camera
Global point
Global state$

Const 
STANDING=0
Const MOVING=1

Const moveSpeed#=.6
Const turnSpeed#=.1

xGraphics3D 640,480,0,0,1

camera
=xCreateCamera()
xPositionEntity camera,0,150,0
xRotateEntity camera
,90,0,0

plane
=xCreateCube()
xScaleEntity plane,1000,.1,1000
xEntityPickMode plane
,2
xEntityColor plane
,160,150,150
xEntityAlpha plane
,0.5 

point
=xCreateCube()
xEntityColor point,255,0,0

cub
=xCreateCube()
xScaleEntity cub,5,5,5

state
$=STANDING

While Not xKeyDown)
UpdateMovement()

xPointEntity camera,cub
xUpdateWorld
()
xRenderWorld()

xText 0,40,"PickedX: "+xPickedX#()
xText 0,60,"PickedY: "+xPickedY#()
xText 0,80,"PickedZ: "+xPickedZ#()

xFlip
Wend

End

Function UpdateMovement()
    If 
xMouseHit(1)
        If 
state$=STANDING 
            state
$=MOVING
        
EndIf 
        
xCameraPick(camera,xMouseX(),xMouseY())
        
xPositionEntity point,xPickedX(),0,xPickedZ()+3
    
    
EndIf
    If 
state$=MOVING            

             xt
#=xPickedX#()
             
zt#=xPickedZ#()
            
xl#=xEntityX#(cub)
            
zl#=xEntityZ#(cub)
             
cx#=xt-xl 
             
cz#=zt-zl 
             
cn#=Sqr(cx*cx+cz*cz) 
             
cx=cx/cn    
             cz
=cz/cn
            
            xAlignToVector cub
,cx,0,cz,0,turnSpeed#
            
xMoveEntity cub,0,0,moveSpeed#

            
If Distance2D(xEntityX(cub),xEntityZ(cub),xPickedX(),xPickedZ())<10
                state
$=STANDING
            
EndIf
    EndIf
End Function        

Function 
Distance2D#(x1#,y1#,x2#,y2#)
Local nx#=x1-x2
Local ny#=y1-y2 
Return Sqr((nx*nx)+(ny*ny))
End Function 
в каждом cub передвигается по разному
в чем может быть проблема?
(Offline)
 
Ответить с цитированием