Как я могу заставить gameObject прыгать сначала быстро, а через некоторое время начать замедляться? Этот код работает не так, как предполагалось. Вот именно то, что я хочу: когда игра запускается, gameObject воспроизводит анимацию ожидания, затем "Приседание", когда пользователь нажимает пальцем (приседание - это анимация, которую я сделал) и прыжок (сначала быстро, затем замедляется через некоторое время, как гравитация на Луне, скажем), когда они отпускают палец. Это все! Чтобы вам было лучше видно, возьмем, к примеру, главного героя в Crossy Road: когда пользователь нажимает, курица «приседает», а когда пользователь отпускает палец, курица прыгает. Та же концепция, но прыжок будет другим.
public float startSpeed;
public float slowAmount;
float actualSpeed;
bool isJumping;
void Awake()
{
gameObject.GetComponent<Animation>()["Idle"].wrapMode=WrapMode.Loop;
gameObject.GetComponent<Animation>() ["TouchDown"].wrapMode = WrapMode.Once;
}
void Start()
{
GetComponent<Animation>().Play("Idle");
}
void Update()
{
if (Input.touchCount > 0)
{
if (Input.GetTouch (0).phase == TouchPhase.Began)
{
GetComponent<Animation> ().Play ("TouchDown");
}
if (Input.GetTouch (0).phase == TouchPhase.Ended)
{
actualSpeed = startSpeed;
isJumping = true;
}
if (isJumping)
{
actualSpeed -= slowAmount * Time.deltaTime;
transform.position += new Vector3 (0.5f, actualSpeed * Time.deltaTime, 0);
}
}
}