2015-11-16 4 views
2

Я работаю над Unity 5, и мне нужно создать список преобразований, чтобы модифицировать их в инспекторе (положение и вращение) для эмуляции другой камеры. Эта эмуляция предназначена для демонстрации, например, камеры, движущейся самостоятельно во время демонстрации.Список преобразований, редактируемых от инспектора

В настоящее время у меня есть список преобразований, но я не знаю, как сделать их модифицируемыми в инспекторе и изменить их положение во время выполнения?

Edit: 18/11/15

Вот решение, что если найти с помощью моего друга более осведомлены о том, что действительно делает единство, надеюсь, что это поможет вам и еще раз спасибо за все ваши ответ он мне очень помог: D:.

using UnityEngine; 
using System.Collections; 
using System.Collections.Generic; 

public class MoveCamera : MonoBehaviourSingleton<MoveCamera> 
{ 
    public List<Transform> cameraPositions = new List<Transform>(); 

    private Transform m_Target; 
    private float m_Speed; 
    private bool m_Translate; 
    private bool m_Rotate; 

    public void SwitchToNext(int index, float speed) 
    { 
     m_Target = cameraPositions[index]; 
     m_Translate = true; 
     m_Rotate = true; 
    } 

    public void Update() 
    { 
     if (m_Target != null && (m_Translate || m_Rotate)) 
     { 
      float ratio = Time.deltaTime * m_Speed; 
      transform.position = Vector3.Lerp(transform.position, m_Target.position, ratio); 
      transform.rotation = Quaternion.Slerp(transform.rotation, m_Target.rotation, ratio); 

      if (Vector3.Distance(transform.position, m_Target.position) < 0.001f) 
      { 
       transform.position = m_Target.position; 
       m_Translate = false; 
      } 
      if (Quaternion.Angle(transform.rotation, m_Target.rotation) < 0.001f) 
      { 
       transform.rotation = m_Target.rotation; 
       m_Rotate = false; 
      } 
     } 
    } 
} 
+0

Что вы пробовали? Можете ли вы показать нам какой-то код? –

+0

я должен был стереть мой код прошлой ночью в доступе нервов ^^ но я выглядит следующим образом: класс 'MoveCamera общественности: MonoBehavior { аннулируются Start() { Список MyList = новый список }' – CRC

+0

I подумайте, что это не будет работать напрямую, но, возможно, есть другие способы достижения этого косвенного интерфейса маркера e..g, тега, ... Похоже на вещь начала/конца позиции. Так интересно узнать, в чем цель? Можете ли вы присоединить MonBehaviour к целевым объектам? – Kay

ответ

1

Я бы предложил простой публичный список в вашем сценарии MoveCamera, а затем перетащил цели в этот список. Таким образом, у вас есть полный контроль над порядком объектов, и вы можете сделать анимированные переходы с позиции камеры n до n + 1.

public List<Transform> cameraPositions = new List<Transform>(); 

Может быть, простая последовательность не соответствует вашим требованиям, и вам нужен более сложный способ, чтобы решить, какие позиции можно перейти на какой другой позиции. В этом случае я бы предложил вспомогательный скрипт, например. CameraTransition.cs. Здесь вы можете поместить логику проверки и параметры определения.

Прикрепите это к каждому разрешенному объекту заданной позиции и замените его на MoveCamera на List<CameraTransition>.

2

Ok позволяет увидеть, если это поможет (я буду писать код если вы хотите этого) вы х геймобжекты в вашей сцене.

Вам понадобится список GameObject. Допустим, вы получите их, делая

public List<GameObject> myObjectList = new List<GameObject>(); 
public List<Transform> myTransformList = new List<Transform>(); 
myObjectList = GameObject.FindGameObjectsWithTag("YourCustomTagHere"); 

foreach(Gameobject g in myObjectList) 
{ 
myTransformList.Add(g.transform); 
} 

Я не знаю, если этот код работает, я не могу проверить это прямо сейчас, но я думаю, что логика есть. Идите вперед и попробуйте несколько вещей, дайте некоторую обратную связь, сделали вы это или нет.

+0

Здравствуйте, спасибо за ваш ответ! Я попробую это, но главная проблема, что у меня есть, как я могу изменить это в инспекторе? Будет ли это редактируемым в инспекторе, смогу ли я добавить много преобразований, как я хочу? У них будет все положение и трансформация вращения? – CRC

+0

Когда вы объявите переменную как «общедоступную», она будет видна в инспекторе. Однако в этом случае это список Transforms, поэтому я не знаю, sry. Но я хотел бы знать, что, если у вас есть возможность проверить это, дайте мне несколько отзывов. –

+0

Еще раз спасибо за ваши ответы! Я не могу проверить его сейчас, пока я нахожусь на работе, но когда я вернусь в свой дом, я испытаю его и дам вам обратную связь! – CRC

Смежные вопросы