Как заставить Animator Controller понять, когда персонаж поднимается в гору и / или в гору?
Я понимаю, что одним из способов было бы использовать какой-нибудь триггерный коллайдер, который включает / выключает необходимую анимацию, но это кажется немного надуманным способом сделать что-то, так как это означало бы, что эти коллайдеры gazillion повсюду рельеф местности.
Я НАСТОЯЩИМ, чтобы определить, когда персонаж поднимается или опускается, больше похоже на «это количество юнитов на расстояние Xaxis», поэтому он работает там, где персонаж поднимается круче, чем обычно. В основном, чтобы отследить общее движение Y в последних двух кадрах и настроить анимацию на основе этого.
Или что-то похожее.
Может быть, вы знаете некоторые учебники?
Каким-то образом я пробился к этому коду, но все еще не могу понять, как его вычислить.
Постскриптум Есть комментарии "// ELEVATION" на стороне линий, которые я добавил в скрипт движения.
public class Movement : MonoBehaviour {
public CharacterController2D controller;
public Animator animator;
public float horizontalMove = 0f;
public float elevation = 0f; /// ELEVATION
public float speed = 300f;
new Rigidbody2D rigidbody;
// Use this for initialization
void Start () {
//rigidbody = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update ()
{
horizontalMove = Input.GetAxisRaw("Horizontal") * speed;
elevation = ; // ELEVATION
animator.SetFloat("Speed", Mathf.Abs(horizontalMove));
animator.SetFloat("ElevationTrigger", elevation); // ELEVATION
}
private void FixedUpdate()
{
//rigidbody.MovePosition(rigidbody.position * horizontalMove * speed * Time.fixedDeltaTime);
controller.Move(horizontalMove * Time.fixedDeltaTime, false, false);
}
}