Координаты(локальные и глобальные)

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

Координаты(локальные и глобальные)

Сообщение Rip 11 дек 2011, 20:08

Здравствуйте, мне нужно сместить пивот относительно куба, и после поворота на 90 градусов, снова сместить в туже точку(левый нижний угол). После поворота куба его координаты нужно сбросить, или выровнять его по (0,0,0).
Но все равно что то не выходит, куб вращается по кругу вокруг точки, как будто координаты выставляются глобально. ~x(
Синтаксис:
Используется csharp

if(Input.GetButtonDown("Fire1"))
                {
                        tPivot.transform.DetachChildren();
                        //Cube.Rotate(0,0,0);
                //      tPivot.Rotate(0,0,0);
                        tPivot.parent=Cube;
                               
                        tPivot.localPosition=new Vector3(-0.5f,-0.5f,0);
                       
                        Cube.transform.DetachChildren();
                        Cube.parent=tPivot;
                        animFlag=true;
                }
if(animFlag)
                {
                iTween.RotateBy(Pivot,iTween.Hash("z", 0.25, "easeType", "linear", "loopType", "once", "delay", .4));
                if(tPivot.localEulerAngles.z>=-90)
                        {
                               
                                animFlag=false;
                                //
                        }

 
Изображение
Реальность существует независимо от вас, до тех пор пока вы с этим согласны.
Изображение
Аватара пользователя
Rip
UNIт
 
Сообщения: 103
Зарегистрирован: 30 янв 2010, 14:11
Откуда: Оренбугская обл. г.Орск
  • ICQ

Re: Координаты(локальные и глобальные)

Сообщение Rip 11 дек 2011, 20:12

Я хочу, чтоб куб, повернулся относительно пивота(отдельный гаймобжект), который я выставляю в левый нижний угол куба. Куб =(1,1,1) следовательно пивот нужно сместить на 0.5 от центра по локальным координатам куба.
Но куб поворачивается и оси меняются, пробовал поворачивать куб в (0,0,0). Не помогло, также крутится вокруг, своего угла.
Изображение
Реальность существует независимо от вас, до тех пор пока вы с этим согласны.
Изображение
Аватара пользователя
Rip
UNIт
 
Сообщения: 103
Зарегистрирован: 30 янв 2010, 14:11
Откуда: Оренбугская обл. г.Орск
  • ICQ

Re: Координаты(локальные и глобальные)

Сообщение Левш@ 11 дек 2011, 23:09

Причем тут пивот?
Удочери свой обьект пустышке и трансформируй относительно нее.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Координаты(локальные и глобальные)

Сообщение Rip 14 дек 2011, 21:06

Левш@ писал(а):Причем тут пивот?
Удочери свой обьект пустышке и трансформируй относительно нее.

Пивот необходимо менять после поворота, иначе куб будет вертеться а не перемещаться.
Я не понял как они работают локальные и глобальные координаты. Вроде все просто а не выходит. Нужно скинуть локальные координаты куба, чтоб сам куб остался в уже новом положении, а его локальные координаты вернулись в исходное положение.
Вот что получилось(100kb):
HTML код для вашего блога :
Код: Выделить всё
<script language='javascript' type="text/javascript"> document.write("<iframe marginheight='0' src='http://unity3d.ru/distribution/player.php?url=http://gbyter.narod.ru/WebPlayer.unity3d&w=600&h=450&t=false&preview=1' height='"+(450+30)+"' width='600' frameborder='0' scrolling='no'></iframe>"); </script>
Изображение
Реальность существует независимо от вас, до тех пор пока вы с этим согласны.
Изображение
Аватара пользователя
Rip
UNIт
 
Сообщения: 103
Зарегистрирован: 30 янв 2010, 14:11
Откуда: Оренбугская обл. г.Орск
  • ICQ

Re: Координаты(локальные и глобальные)

Сообщение waruiyume 14 дек 2011, 21:57

Немного не в тему, но всё-же:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Krutilka : MonoBehaviour
{
    private Transform tr;
    private Transform pivot;
    private Vector3 disp = new Vector3(-1f, 0f, 0f);
    private float targetY = 90f;
    public float rotationSpeed = 90f;

        // Use this for initialization
        void Start ()
        {
            tr = transform;
            pivot = new GameObject().transform;
        pivot.position = new Vector3(0.5f,0.5f,0.5f)+tr.position;
            tr.parent = pivot;
        }
       
        // Update is called once per frame
        void Update ()
        {
            pivot.transform.rotation = Quaternion.RotateTowards(pivot.transform.rotation, Quaternion.Euler(0f, targetY, 0f),
                                                                rotationSpeed*Time.deltaTime);
        if(Mathf.Abs(Vector3.Dot(pivot.transform.forward,Vector3.forward)%0.5f)<0.0001f)
        {
            pivot.transform.rotation = Quaternion.Euler(pivot.transform.localEulerAngles.x, targetY, pivot.transform.rotation.z);
            tr.parent = null;
            pivot.transform.position += Vector3.forward+disp;
            disp *= -1;
            targetY *= -1;
            pivot.rotation = Quaternion.identity;
            tr.parent = pivot;
        }
        }
}

 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Координаты(локальные и глобальные)

Сообщение Rip 14 дек 2011, 21:58

Или действительно навесить 12 геобжектов на каждую грань?
но кубов будет на сцене несколько, и на мобильнике не сильно ли сожрет ресурсы?
waruiyume спс :-bd :ymparty:
Изображение
Реальность существует независимо от вас, до тех пор пока вы с этим согласны.
Изображение
Аватара пользователя
Rip
UNIт
 
Сообщения: 103
Зарегистрирован: 30 янв 2010, 14:11
Откуда: Оренбугская обл. г.Орск
  • ICQ


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

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

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