• Не изменяется скорость передвижения (не в inspector(-е), не в коде) что делать?

    @Ente
    Unity developer
    Direction умножьте на speed
    Ответ написан
    Комментировать
  • Не понимаю в чём ошибка в коде, как исправить?

    @sewar
    Ошибка CS1003 в Unity указывает на то, что присутствует некорректный синтаксис в коде. В частности, в данном коде ошибка происходит в строке с командой rb.velocity. Синтаксически правильно написать:

    rb.velocity = direction * speed;
    Также в данном коде используется неправильное название класса PlayerContorller, которое должно быть PlayerController. Для исправления этой ошибки следует изменить название класса на PlayerController во всех файлах, где он используется. Правильный код мог бы выглядеть так:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class PlayerController : MonoBehaviour
    {
        public float speed = 10;
        public Animator animator;
        private Rigidbody2D rb;
        private Vector2 direction;
    
        void Start()
        {
            rb = GetComponent<Rigidbody2D>();
        }
    
        void FixedUpdate()
        {
            direction.x = Input.GetAxisRaw("Horizontal");
            direction.y = Input.GetAxisRaw("Vertical");
    
            animator.SetFloat("Horizontal", direction.x);
            animator.SetFloat("Vertical", direction.y);
            animator.SetFloat("Speed", direction.sqrMagnitude);
    
            rb.velocity = direction * speed;
        }
    }
    Ответ написан
    Комментировать
  • Не понимаю в чём ошибка в коде, как исправить?

    Adler_lug
    @Adler_lug
    Подозреваю, что тут:
    rb.velocity = new Vector2(direction * x , direction * y);
    запятой не хватает.

    P.S. Не с Unity нужно начинать, а с основ C# и читать, что вам пишут, что бы не возникало глупых вопросов типа этого...
    Ответ написан
    1 комментарий
  • Не понимаю в чём ошибка в коде, как исправить?

    GavriKos
    @GavriKos
    1. Начните не с юнити а с сишарпа
    2. Используйте IDE, а не какое то говно
    3. Прочитайте ошибку, найдите строчку в которой ошибка
    4. Подумайте что в этой строчке не так.

    Вам же прям вот указана строка. Прям вот напрямую. И любая IDE это подчеркнет красным.
    Ответ написан
    4 комментария
  • 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;
        }
    }
    Ответ написан
    Комментировать