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

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

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

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

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

Объект привязал к родителю
Родитель повернулся на 180 вокруг Y
При EntityParent,obj,0 объект тоже разворачивает на 180 вокруг Y
Вопрос: Что из чего нужно вычесть, чтобы грамотно отвязать?
Спасибо.
(Offline)
 
Ответить с цитированием
Старый 10.08.2017, 19:46   #2
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,354
Написано 2,470 полезных сообщений
(для 6,850 пользователей)
Ответ: Отвязать от родителя

EntityParent child, 0, [global]
попробуй третий параметр
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Старый 11.08.2017, 09:47   #3
sdf111
Оператор ЭВМ
 
Регистрация: 28.01.2013
Сообщений: 32
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Отвязать от родителя

Всё-одно разворачивает, да ещё и позицию сбрасывает на ноль
Global port

       If EntityDistance (a\user,port)<=1.5 And portYaw# >=-178
                                   portYaw#=EntityYaw (port)                      
                                   TurnEntity port,0,-1,0                                                                  
                                    EntityParent a\user, port     
          
         Else If   EntityDistance (a\user,port)>=3 And  portYaw# <=-177                             
                                    EntityParent a\user, 0,False
Может тут DeltaYaw надо, или TFormPoint ??
(Offline)
 
Ответить с цитированием
Старый 11.08.2017, 17:35   #4
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Отвязать от родителя

EntityParent,obj,1
жи есть?
Я, правда, уже не помню, не стоит ли по умолчанию там уже единица
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 11.08.2017, 18:11   #5
sdf111
Оператор ЭВМ
 
Регистрация: 28.01.2013
Сообщений: 32
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Отвязать от родителя

EntityParent entity,parent[,global]
global (не обязательно) - true - чтобы сохранить глобальную позицию и ориентацию привязанного объекта (по умолчанию).

Это ничего не даёт. Юзера разворачивает при отвязке.
(Offline)
 
Ответить с цитированием
Старый 11.08.2017, 18:48   #6
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Отвязать от родителя

Так у тебя же False стоит зачем-то?

EntityParent a\user, 0,False

Сделай так:

EntityParent a\user, 0,True

Тоже так же?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 11.08.2017, 18:57   #7
sdf111
Оператор ЭВМ
 
Регистрация: 28.01.2013
Сообщений: 32
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Отвязать от родителя

по моему там true по умолчанию. Всё так же..
(Offline)
 
Ответить с цитированием
Старый 11.08.2017, 21:22   #8
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Отвязать от родителя

Сделай более простой пример с максимально простым кодом и без медии (например, на кубиках), чтобы его можно было запустить у себя.
Если нет возможности "потыкать", шанс того, что кто-то поможет, сильно снижается.
Кроме того, возможно, в процессе создания изолированного примера кода с багом, ты сам найдёшь его причину. Может быть, помимо отвязки от родителя, там ещё что-то делается, что влияет на результат.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
RBK (14.08.2017), St_AnGer (12.08.2017)
Старый 14.08.2017, 09:43   #9
sdf111
Оператор ЭВМ
 
Регистрация: 28.01.2013
Сообщений: 32
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Отвязать от родителя

Сообщение от ABTOMAT Посмотреть сообщение
Сделай боле..........то влияет на результат.
Никак не думал, что такой простой вопрос окажется таким проблемным для профи........
(Offline)
 
Ответить с цитированием
Старый 14.08.2017, 10:42   #10
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: Отвязать от родителя

Ответ на твой вопрос достаточно простой: EntityParent ничего не поворачивает, только меняет координатную сетку для привязанного объекта.
Значит ошибка где-то в логике написанной тобой программы.
Т.к. саму программу ты к вопросу не добавил, всем остаётся лишь гадать что с ней не так
__________________
AMD Sempron(tm) 1.41Ггц, 1024МБ ОЗУ, GeForce 6200 128МБ, WinXP SP3.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо RBK за это полезное сообщение:
ABTOMAT (14.08.2017), Кирпи4 (15.08.2017), L-ee-X (14.08.2017), St_AnGer (14.08.2017)
Старый 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)
 
Ответить с цитированием
Старый 14.08.2017, 14:46   #12
L-ee-X
Разработчик
 
Аватар для L-ee-X
 
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений
(для 220 пользователей)
Ответ: Отвязать от родителя

Я исходя из вышенаписанного вообще ничего не понял, чего хочет ТС
Сообщение от sdf111 Посмотреть сообщение

EntityParent user, 0
Это что?
__________________
(Offline)
 
Ответить с цитированием
Старый 14.08.2017, 15:32   #13
sdf111
Оператор ЭВМ
 
Регистрация: 28.01.2013
Сообщений: 32
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Отвязать от родителя

Сообщение от L-ee-X Посмотреть сообщение
чего хочет ТС
ТС хочет чтобы юзера не разворачивало в момент отвязки. Пост#11 оффтоп№2(с мышью)
(Offline)
 
Ответить с цитированием
Старый 14.08.2017, 15:55   #14
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Смущение Ответ: Отвязать от родителя


Итак, объясняю что происходит:
когда расстояние между user и port становится <= 1.5,
вот эта часть кода крутит объект port
 If  EntityDistance(user,port)<=1.5 And portYaw >=-178
      portYaw=EntityYaw (port)                      
   .  .  . 
 Endif
когда portYaw станет >= -178 , вращение остановится

привязки и остальное не влияют на эту часть кода


стоп проблема в другой части
__________________
AMD Sempron(tm) 1.41Ггц, 1024МБ ОЗУ, GeForce 6200 128МБ, WinXP SP3.

Последний раз редактировалось RBK, 14.08.2017 в 16:17. Причина: не понял в чем пролема
(Offline)
 
Ответить с цитированием
Старый 14.08.2017, 16:17   #15
sdf111
Оператор ЭВМ
 
Регистрация: 28.01.2013
Сообщений: 32
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: Отвязать от родителя

Сообщение от RBK Посмотреть сообщение
...
когда расстояние между user и port становится <= 1.5,
вот эта часть кода крутит объект port
когда portYaw станет >= -178 , вращение остановится
привязки и остальное не влияют на эту часть кода
Спасибо. Но я как бы в курсе....
А дальше?
Когда, в примере из Поста#11 оффтоп №2(с мышью), мы удаляемся от лифта и Parent становится =0 , юзера разве не разворачивает на 180?..
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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