Я довольно новичок в кодировании и 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;
}
}
Заранее спасибо и надеюсь, что это возможно.