• Unity, 2D: как сделать прыжок?

    @youkerni
    Unity3D developer
    Что нужно что бы все заработало:
    1) Скопировать код.
    2) Объект на котором висит Rigidbody должен иметь этот скрипт и коллайдер (обязательно 2д, не триггер)
    3) Пол (то, с чем соприкасается объект игрока) должен иметь Layer "Ground" и коллайдер2д (не триггер)

    Суть в том, что при вводе вы должны запоминать факт ввода клавиши прыжка и игнорировать его до приземления (для этого использован метод OnCollisionEnter2D)

    Исходя из этого дополните Ваш пример как Вам угодно.

    public class PlayerController : MonoBehaviour
    {
        Rigidbody2D m_Rigidbody;
        readonly Vector2 force = new Vector2(50, 50);
        bool inAir;
    
        private void Start()
        {
            m_Rigidbody = GetComponent<Rigidbody2D>();
        }
    
        void Update()
        {
            if (Input.GetKey(KeyCode.Space) && !inAir)
            {
                inAir = true;
                m_Rigidbody.AddForce(force);
            }
        }
    
        private void OnCollisionEnter2D(Collision2D collision)
        {
            if (collision.gameObject.layer == LayerMask.NameToLayer("Ground"))
                inAir = false;
        }
    }
    Ответ написан
    Комментировать
  • Анимация перебивает другую?

    @Hzpriezz
    Тут больше не код, если анимация спрайтовая то нужно правильно выставлять аниматор контроллеры. Плавного перехода трудно будет добиться. Нужна отдельная анимация для диагонального передвижения, тут участвуют обе координаты и контроллер просто не понимает какую анимацию не проигрывать, поэтому работают обе.
    Ответ написан
    Комментировать