Самый простой способ создания круговой анимации - PullRequest
2 голосов
/ 20 июля 2011

Я пытаюсь вращать Луну вокруг Земли в Единстве.

Мои вопросы:

  1. Какой самый простой способ вращать Землю вокруг ее центра.
  2. Как я могу вращать Луну вокруг Земли?

Ответы [ 3 ]

1 голос
/ 26 июля 2011

Я рекомендую использовать transform.RotateAround () в функции обновления Луны.

using UnityEngine;

public class Orbit : MonoBehaviour
{
    /* the object to orbit */
    public Transform target;

    /* speed of orbit (in degrees/second) */
    public float speed;

    public Update()
    {
        if (target != null) {
            transform.RotateAround(target.position, Vector3.up, speed * Time.deltaTime);
        }
    }
}

ОБНОВЛЕНИЕ:

Чтобы сделатьЛуна вращается вокруг Земли, а Земля вращается вокруг Солнца, вы должны сделать Луну дочерью Земли.Добавьте приведенный выше скрипт к нему.Тогда он будет находиться в координатном пространстве Земли, что означает, что он будет оставаться в том же относительном положении.Затем вы можете прикрепить скрипт к Земле, а потомку Земли к Солнцу.

Если вы выберете такой подход, я бы порекомендовал изменить скрипт следующим образом:

using UnityEngine;

public class Orbit : MonoBehaviour
{
    /* speed of orbit (in degrees/second) */
    public float speed;    

    public Update()
    {
        Transform target = transform.parent;

        if (target != null) {
            transform.RotateAround(target.position, Vector3.up, speed * Time.deltaTime);
        }
    }
}
0 голосов
/ 21 июня 2012

Что может помочь в вашем случае для обработки нескольких анимаций в Unity3D, так это рассмотреть возможность сделать его более легким благодаря обзору пути ваших анимаций. Чтобы сузить границу между мышлением и фактическим выполнением анимации, я использую плагин iTween , чтобы визуализировать эти пути анимированного объекта и применить некоторые более сложные логики. Для вашего случая специально добавить вращение к объекту и анимировать путь, по которому он следует. Для использования iTween задокументировано достаточно много информации, и с его помощью можно легко создать такую ​​анимацию.

0 голосов
/ 21 июля 2011
  1. Предполагая, что ваша модель Земля уже центрирована относительно своей локальной системы координат, вы можете со временем изменить myEarth.Transform.localRotation, чтобы оживить ее вращение.

  2. Для вращениялуна вокруг земли, вы сначала захотите гнездить луну как дитя земли;Таким образом, когда Земля движется, Луна все еще будет правильно расположена относительно Земли.Если Луна - дитя Земли, вам придется анимировать Луну по эллиптической (или приблизительно круглой) траектории вокруг начала координат (<0,0,0>) в земных локальных координатах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...