Hy all, я пытаюсь сделать метод расширения, который очень важен, чтобы вы могли выполнять функцию вращения, но вы можете выбрать время, в которое выполняется, и увеличивать значение каждый раз, когда подпрограмма называется. Пример: transform.Rotate(90,0,0, SecondsInWichMakeTheTransition);
Сделайте метод расширения с помощью IEnumerator
это код, который я пишу.
public static class RotateMeExtensions{
public static IEnumerator MoveObject(this Transform source,
int x,int y, int z, float overTime)
{
Quaternion target = new Quaternion();
float a = source.rotation.x + x;
float b = source.rotation.y + y;
float c = source.rotation.z + z;
target.eulerAngles = new Vector3(a, b, c);
float startTime = Time.time;
while(Time.time < startTime + overTime)
{
source.rotation = Quaternion.Lerp(source.rotation, target, (Time.time - startTime)/overTime);
yield return null;
}
source.rotation = target;
}
Прямо сейчас я называю это с Button UI, но после того, как в первый раз я использую его, он не работает больше, то остаться в Углы Эйлера 90,7. Я хочу увеличивать его каждый раз на 90 градусов. Thnak вы Bye Bye
, в котором пространство имен это GblobalMonobehavior? –
В моей идее это просто монобэш, который привязан к обычным объектам и имеет статическую переменную public, которая указывает на собственный экземпляр, такой как singleton. Дело в том, что это должен быть экземпляр monobehaviour, потому что, если нет, он не будет запускать coroutine –
thnak you, теперь я знаю, как делать расширение со статическими и singleletons. :) –