Как проверить вертикальную скорость в 2d единице? - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь оживить мой спрайт, когда моя вертикальная скорость меньше 0 (движется вниз).Как вы это делаете?

if (VERTICALVELOCITY < 0) {
animator.SetFloat("IsFalling", true);
}

Попробуйте изменить VERTICALVELOCITY и, возможно, помочь с кодом.Кроме того, я должен сделать это в Void Update или FixedUpdate?

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

У вас есть твердое тело в этом игровом объекте? Тогда это легко.

private Rigidbody rb;

Start()
{
    rb = getComponent<Rigidbody>();
}

Update ()
{
    if(rb.velocity.y < 0)
    {
        // do your stuff
    }
}

В противном случае вам нужно записывать y-позицию в каждом кадре.

float ypos_lastframe = 0;

Start()
{
    ypos_lastframe = transform.position.y;
}

Update()
{
    if(transform.position.y < ypos_lastframe)
    {
       // do your stuff
    }
    // important to do this assignment AFTER the check above.
    ypos_lastframe = transform.position.y;
}
0 голосов
/ 27 мая 2019

Если вы используете ригибод, вы можете сделать это:

public class CheckSpeed : MonoBehaviour
{
    private Rigidbody2D rb2D;

    void Start() => rb2D = GetComponent<Rigidbody2D>();

    private float GetVerticalSpeed() => rb2D.velocity.y;
}

Ваш код станет:

if (GetVerticalSpeed() < 0) {
animator.SetFloat("IsFalling", true);
}

Поскольку это связано с анимацией, я бы установил ее наLateUpdate.

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