2015-08-24 4 views
0

Как я могу сделать gameObject быстро быстрым, а затем начать замедление через некоторое время? Этот код не работает, как и предполагалось. Вот именно то, что я хочу: Когда игра начинается, gameObject играет бездельную анимацию, а затем «Приседает», когда пользователь нажимает на свой палец (Squat - это анимация, которую я сделал) и Jump (сначала быстро, затем замедляюсь через некоторое время, например, гравитация на Луне, скажем), когда они отпускают палец. Это все! Чтобы дать вам лучший обзор, давайте возьмем, например, главного героя в Crossy Road: когда пользователь нажимает вниз, курица «приседает», а когда пользователь отпускает палец, прыгает цыпленок. Та же концепция, но прыжок будет другим.Как я могу сделать gameObject быстро прыгать сначала, а затем замедлить работу через некоторое время? Этот код не работает, как будто это должно быть

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); 
     } 

    } 
} 

ответ

0

Добавить еще одну переменную, называемую startY типа float (private).

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; 
      startY = transform.position.y; 
     } 
    } 
    if (isJumping) { 
     actualSpeed -= slowAmount * Time.deltaTime; 
     transform.position += new Vector3 (0, actualSpeed * Time.deltaTime, 0); 
     if(startY > transform.position.y) isJumping = false; 
    } 
} 

И измените функцию обновления на это.

+0

Это то, что я сделал в начале. Это тоже не сработало. Точно такая же проблема. –

+0

Помогите объяснить проблему? –

+0

Я загружу личную ссылку на YouTube. –