Wątek przeniesiony 2022-05-05 21:31 z C# i .NET przez cerrato.

Animacja - skala obiektu. Unity/C#

0

Kod poniżej ustawia skalę danego obiektu na 0.13 z powolna animacja jego rośnięcia od 0. Jednakże ja bym chciała żeby ten kod dodawał tą wartość 0.13 do aktualnej skali tego obiektu, a nie zaczynał o 0. Czy jest jakiś łatwy sposób na przerobienie tego tak żeby za każdym razem dodawało jakąś dana wartość do skali a nie ją na nowo ustawiało plus żeby dodatkowo miało to swoją animacje?

    // create a new AnimationClip
    AnimationClip clip = new AnimationClip();
    clip.legacy = true;

    // create a curve
    Keyframe[] keys;
    keys = new Keyframe[3];
    keys[1] = new Keyframe(6.0f, 0.13f);

    //Scale x
    curve = new AnimationCurve(keys);
    clip.SetCurve("", typeof(Transform), "localScale.x", curve);

     // Scale y
     curve = new AnimationCurve(keys);
     clip.SetCurve("", typeof(Transform), "localScale.y", curve);                                   
     //Scale z
     curve = new AnimationCurve(keys);
     clip.SetCurve("", typeof(Transform), "localScale.z", curve);

     //animate the GameObject
     anim.Addclip(clip clip.name);
     anim.Play(clip.name);
1

Ja bym to zrobił bez użycia AnimationClip itp.

Zrób sobie zestaw metod do obsługi skali obiektu.
Coś w tym stylu:

public Transform myTransform; // w edytorze musisz na to pole przeciągnąć obiekt, który skalujesz

void ChangeScale(float increase = 0.13f)
{
  StopAllCoroutines();
  StartCouroutine(ChangeScaleCoroutine(increase));
}

IEnumerator ChangeScaleCoroutine(float increase)
{
  const float speed = 1.0f / 6.0f;

  float currentScale = myTransform.localScale.x;
  float targetScale = currentScale + increase;

  while (currentScale != targetScale)
  {
    currentScale = Mathf.MoveTowards(
      currentScale,
      targetScale,
      Time.deltaTime * speed
    );

    myTransform.localScale = Vector3.one * currentScale;

    yield return null;
  }
}

Pisane z palca, mogą zdarzyć się literówki...

Wywołanie ChangeScale(x) zmienia z animacją skalę obiektu o wartość x.

1 użytkowników online, w tym zalogowanych: 0, gości: 1