Оператор ЭВМ
Регистрация: 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
|