Вращение дочернего объекта

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Вращение дочернего объекта

Сообщение xrou 02 мар 2019, 12:09

Есть скрипт который изменяет rotation объектов по значению угла(Angle) и есть лимиты(Limit_MIN/MAX).
При вращении одного объекта все хорошо, лимиты работают угол выставляется. НО когда два объекта соеденины в иерархию, при повороте родительского объекта дочерний объект не учитывает угол поворота родителя и сохраняет первоначальное положение в мировых координатах. Как сделать чтобы любое положение родителя считалось начальным для чайлда (углы родителя не принимались в учет)
Блин, ну если родитель повернулся на 45 градусов, то эти 45 градусов стали нулем для дочернего.

Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Serva : MonoBehaviour
{
   
    public bool ROOT;
    public Serva ParentScript;
    public Vector3 Axis;
    public bool UseLimit;
    public float Limit_MIN;
    public float Limit_MAX;
    public float Angle;
    private float PrevParentAngle;
   

    void Start()
    {
    }

    void Update()
    {
        if (!ROOT)
        {
            if (Axis.x == 1)
            {
                if (ParentScript.Angle != PrevParentAngle)
                {
                    Angle = Angle + ParentScript.Angle;
                    Debug.Log("Minimal limit is: "+Limit_MIN+". Max limit is: "+Limit_MAX);
                }
                if (UseLimit == true)
                {
                    if (Angle >= Limit_MIN && Angle <= Limit_MAX)
                    {
                        transform.rotation = Quaternion.Euler(Angle, 0, 0);
                    }
                    else if (Angle < Limit_MIN)
                    {
                        transform.rotation = Quaternion.Euler(Limit_MIN, 0, 0);
                    }
                    else
                    {
                        transform.rotation = Quaternion.Euler(Limit_MAX, 0, 0);
                    }
                }
                else
                {
                    transform.rotation = Quaternion.Euler(Angle, 0, 0);
                }
                PrevParentAngle = ParentScript.Angle;
            }
            else if (Axis.y == 1)
            {

                if (UseLimit == true)
                {

                    if (Angle >= Limit_MIN && Angle <= Limit_MAX)
                    {
                        transform.rotation = Quaternion.Euler(0, Angle, 0);
                    }
                    else if (Angle < Limit_MIN)
                    {
                        transform.rotation = Quaternion.Euler(0, Limit_MIN, 0);
                    }
                    else
                    {
                        transform.rotation = Quaternion.Euler(0, Limit_MAX, 0);
                    }
                }
                else
                {
                    transform.rotation = Quaternion.Euler(0, Angle, 0);
                }
            }
            else if (Axis.z == 1)
            {
                if (UseLimit == true)
                {
                    if (Angle >= Limit_MIN && Angle <= Limit_MAX)
                    {
                        transform.rotation = Quaternion.Euler(0, 0, Angle);
                    }
                    else if (Angle < Limit_MIN)
                    {
                        transform.rotation = Quaternion.Euler(0, 0, Limit_MIN);
                    }
                    else
                    {
                        transform.rotation = Quaternion.Euler(0, 0, Limit_MAX);
                    }
                }
                else
                {
                    transform.rotation = Quaternion.Euler(0, 0, Angle);
                }
            }

        }
        else
        {
            transform.rotation = Quaternion.Euler(0, 0, 0);
        }
    }
}
 
xrou
UNец
 
Сообщения: 27
Зарегистрирован: 10 сен 2018, 08:56

Re: Вращение дочернего объекта

Сообщение Xtir 02 мар 2019, 12:39

Transform.localRotation
Xtir
UNIверсал
 
Сообщения: 498
Зарегистрирован: 21 окт 2016, 00:37

Re: Вращение дочернего объекта

Сообщение xrou 02 мар 2019, 13:37

Xtir писал(а):Transform.localRotation


Мужик, все работает, спасибо огромное!
xrou
UNец
 
Сообщения: 27
Зарегистрирован: 10 сен 2018, 08:56


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 33