Задать вопрос
Учусь. Стремлюсь. Стараюсь. Надеюсь.
Контакты

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (12)

Лучшие ответы пользователя

Все ответы (34)
  • Как выполнить функцию (часть кода), когда объект становится активным?

    @youkerni
    Unity3D developer
    Вам нужна функция OnEnable.

    Также крайне рекомендую ознакомиться с этой статьей.
    Ответ написан
    Комментировать
  • Как создать на сцене игровой объект в координатах позиции курсора?

    @youkerni
    Unity3D developer
    Mouse position находится в экранной системе координат, а префаб вы создаете в мировой.
    Что бы перевести позицию мыши в мировую систему координат используйте метод
    Camera.main.ScreenToWorldPoint().

    using UnityEngine;
    
    public class SnotCreater : MonoBehaviour
    {
        public GameObject Circle;
        public GameObject CirclePrefab;
    
        void Start()
        {
    
        }
    
        void Update()
        {
            if (Input.GetMouseButtonDown(0))
            {
                var mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                Circle = Instantiate(CirclePrefab, mousePos, Quaternion.Euler(0,0,0)) as GameObject;
            }
    }
    }
    Ответ написан
    3 комментария
  • Как сделать анимацию ходьбы в Unity (2D)?

    @youkerni Автор вопроса
    Unity3D developer
    Для тех кому интересно: ходьбу как таковую я не сделал. Сделал имитацию прыжков.
    Сделал 3 разных GameObject-a: один для тела, два для ног (один для ног которые перед flipX тела, другой после). Отдельной анимацией анимировал тело. А в анимации для ног сделал синхронные движения ног (подготовка к прыжку, сам прыжок, приземление).
    Видео: https://youtu.be/N-rcC8kDZeE
    Ответ написан
    Комментировать
  • IDragHandler Улетает в Нарнию. Почему?

    @youkerni
    Unity3D developer
    Дело в том, что тач происходит в другой системе координат.
    Что бы перевести тач в "мировые" координаты вам необходимо использовать метод Camera.main.ScreenToWorldPoint()
    public void OnDrag(PointerEventData eventData)
    {
       transform.position = Camera.main.ScreenToWorldPoint(eventData.position);
    }
    Ответ написан
    2 комментария
  • 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;
        }
    }
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (43)