Показать сообщение отдельно
Старый 14.08.2017, 14:12   #11
sdf111
Оператор ЭВМ
 
Регистрация: 28.01.2013
Сообщений: 32
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Отвязать от родителя

Сообщение от RBK Посмотреть сообщение
EntityParent ничего не поворачивает, только меняет координатную сетку для привязанного объекта.
Я и не утверждал обратного.
Без мыши отвязка нормальная:
Graphics3D 800,600,32,1  : SetBuffer BackBuffer()  
 font=LoadFont("arial",18)  : SetFont font
 
Global user,portYaw#

 world=CreatePlane() :   tex=CreateTex(256,256)   :  ScaleTexture tex,3,3  :  EntityTexture world,tex  
 Global port=CreateCylinder()  :ScaleEntity port,2,0.02,2 : PositionEntity port,0,1,2  
   
  CreateUser()
                            
Repeat
                        
  Updateuser()
                               
UpdateWorld ()
RenderWorld ()   
         Color 255,255,100
         Text 20,20,"X "+EntityX(user) : Text 20,40,"Y "+EntityY(user)  : Text 20,60,"Z "+EntityZ(user)
         Text 220,20,"Parent "+GetParent (user)   
Flip
Cls
Until KeyHit(1)
End
;==========

Function CreateTex(w,h)
 tex=CreateTexture(w,h)
 SetBuffer TextureBuffer(tex)
Color 100,100,100 
 Rect  10,10,450,450 
 SetBuffer BackBuffer()
 Return tex
End Function


Function CreateUser()                                                                                                           
user=CreateCylinder(3) : ScaleEntity user,0.2,0.05,0.7  :  EntityColor user,255,0,0  : PositionEntity user,0,1,-4
 cam=CreateCamera()  : PositionEntity cam,0,10,0 : TurnEntity cam,90,0,0
         CameraProjMode cam,2 : CameraZoom cam,0.1 : EntityParent cam,user  

End Function


Function Updateuser()

  If KeyDown(200)  MoveEntity user,0,0,0.1
  If KeyDown(208)  MoveEntity user,0,0,-0.1
  If KeyDown(203)  TurnEntity user,0,1.5,0 
  If KeyDown(205)  TurnEntity user,0,-1.5,0

                         If EntityDistance (user,port)<=1.5 And portYaw >=-178
                                   portYaw=EntityYaw (port)                      
                                   TurnEntity port,0,-1,0                                                                  
                                               EntityParent user, port   
                        Else If   EntityDistance (user,port)>=4 And  portYaw <=-177                       
                                               EntityParent user, 0
                         EndIf
 
End Function


с мышью - нет
Graphics3D 800,600,32,2  : SetBuffer BackBuffer()  
 font=LoadFont("arial",18)  : SetFont font
 
Global user, portYaw#
Global cam, camxa#, camya#

 world=CreatePlane() :   tex=CreateTex(256,256)   :  ScaleTexture tex,3,3  :  EntityTexture world,tex  
 Global port=CreateCylinder()  :ScaleEntity port,2,0.02,2 : PositionEntity port,0,1,10  
   
  CreateUser()
                 HidePointer                   
Repeat
                        
  Updateuser()
                               
UpdateWorld ()
RenderWorld ()   
         Color 255,255,100
         Text 20,20,"X "+EntityX(user) : Text 20,40,"Y "+EntityY(user)  : Text 20,60,"Z "+EntityZ(user)
         Text 220,20,"Parent "+GetParent (user)
         Text 220,40,"Yuser "+EntityYaw (user)
    
Flip
Cls
Until KeyHit(1)
End
;==========

Function CreateTex(w,h)
 tex=CreateTexture(w,h)
 SetBuffer TextureBuffer(tex)
Color 100,100,100 
 Rect  10,10,450,450 
 SetBuffer BackBuffer()
 Return tex
End Function


Function CreateUser()                                                                                                           
user=CreateCylinder(3) : ScaleEntity user,0.2,0.5,0.7  :  EntityColor user,255,0,0  :  PositionEntity user,0,1,0 
 cam=CreateCamera(user)  : PositionEntity cam,0,18,0
 
End Function


Function Updateuser()

  If KeyDown(200)  MoveEntity user,0,0,0.1
  If KeyDown(208)  MoveEntity user,0,0,-0.1
  If KeyDown(203)  MoveEntity user,-0.1,0,0 
  If KeyDown(205)  MoveEntity user,0.1,0,0
     mxs#=MouseXSpeed()*0.25                       
     mys#=MouseYSpeed()*0.25
     MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5
     camxa= camxa-mxs Mod 360
     camya= camya+mys
     If  camya<-70 Then  camya=-70     
     If  camya>70 Then  camya=70
     RotateEntity user,0, camxa,0 
     RotateEntity cam, camya,0,0


                         If EntityDistance (user,port)<=1.5 And portYaw >=-178
                                   portYaw=EntityYaw (port)                      
                                   TurnEntity port,0,-1,0                                                                  
                                               EntityParent user, port   
                        Else If   EntityDistance (user,port)>=6 And  portYaw# <=-177                       
                                               EntityParent user, 0
                         EndIf
 
End Function
(Offline)
 
Ответить с цитированием