Есть ли способ, которым я могу обратить вспять Vector3.Lerp? - PullRequest
0 голосов
/ 10 апреля 2020

Я довольно новичок в кодировании и Unity, но мне нравится погружаться в глубокий конец и видеть, где я в конечном итоге. ^^ Но в данный момент я немного застрял и надеюсь получить некоторую информацию о том, как решить мою проблему.

Я работаю над своего рода игрой Flappy Bird в качестве моей первой игры. База работает, но у меня была идея использовать GameObject (тьму), которая масштабируется по мере продвижения по уровню.

После некоторых поисков я наткнулся на объяснение Lerp и пример сценария. До сих пор функция lerp прекрасно работала, но теперь у меня есть еще одна идея изменить функцию lerp всякий раз, когда кто-то получает GameObject (Light Bulb). Вот где я застрял. Может кто-нибудь объяснить мне, как повернуть действие lerp в начальную позицию?

Я пробовал что-то вроде Vector3.One, но затем он вернул его в положение 1,1,1, но StartSize моего скрипта - 3 , 3,0

Также я пришел Mathf.PingPong, но это полностью изменит функцию lerp, даже не ударяя и не получая GameObject (или я ошибаюсь?)

Скрипт:

using UnityEngine;
using System.Collections;

public class Scaling : MonoBehaviour
{
    public float startSize = 3;
    public float minSize = 1;
    public float maxSize = 6;

    public float speed = 2.0f;

    private Vector3 targetScale;
    private Vector3 baseScale;
    private float currScale;

    void Start()
    {
        baseScale = transform.localScale;
        transform.localScale = baseScale * startSize;
        currScale = startSize;
        targetScale = baseScale * startSize;

    }

    void Update()
    {

       if (GameControl.instance.score == 1) //score is test purpose this will be a GameObject later on
       {
            // Code for setting back to StartSize
       }

        else
       {
           transform.localScale = Vector3.Lerp(transform.localScale, targetScale, speed * Time.deltaTime);

           ChangeSize(true);
       }

    }

    public void ChangeSize(bool bigger)
    {

        if (bigger)
            currScale++;
        else
            currScale--;


        currScale = Mathf.Clamp(currScale, minSize, maxSize + 1);

        targetScale = baseScale * currScale;
    } 
}

Заранее спасибо и надеюсь, что это возможно.

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