• Почему не работает addforce?

    K0TlK
    @K0TlK
    yraiv, Коллайдер пули обычным кругом сделай, а не капсулой, ты его вертишь и он в этот момент входит в другой коллайдер.
  • Почему не работает addforce?

    K0TlK
    @K0TlK
    yraiv, Без видео остается только гадать. Кидай сюда видео как оно себя ведет. Видео из эдитора, чтобы видно коллайдеры было.
  • Почему не работает addforce?

    K0TlK
    @K0TlK
    yraiv, Пуля у тебя с какой скоростью летит, что проходит сквозь коллайдеры? Если у тебя мой код, то там в Awake у пули устанавливается isKinematic в true, строчку эту удали и все заработает. С аддфорс у тебя пуля будет разгоняться, она не будет иметь быструю начальную скорость, как должна и при каждом рефлекте скорость будет обнуляться и пуля снова начнет разгоняться.
  • Почему не работает addforce?

    K0TlK
    @K0TlK
    yraiv, На кой тебе этот аддфорс вообще сдался? Что ты пытаешься реализовать?
  • Почему пуля пролетает сквозь коллайдеры тайлмапа?

    K0TlK
    @K0TlK
    yraiv, У тебя тайлмап коллайдер автоматически создает коллайдер размером с тайл. Я не понимаю в чем у тебя там проблема. Если нужно конкретному тайлу изменить генерируемый колайдер: выбираешь СПРАЙТ тайла, открываешь его в спрайт эдиторе, слева сверху выбираешь Custom Physics Shape, редактируешь как тебе нужно.
  • Почему пуля пролетает сквозь коллайдеры тайлмапа?

    K0TlK
    @K0TlK
    yraiv, Collision detection у Rigidbody пули ставь в Continuous. Тогда и велосити не нужно будет. Коллайдер пули длиннее сделай. При скорости 50 она не проходит обычный куб со скейлом 0.01, т.е. такой, что его почти не видно. Не знаю насколько тонким должен быть коллайдер, чтобы пуля сквозь него проходила.
  • Input.GetKeyUp Как настроить в Unity?

    K0TlK
    @K0TlK
    [SerializeField] private Canvas _canvas; // В поле в инспекторе перетаскиваешь сюда нужный канвас


    _canvas.enabled = false; // чтобы отключить отображение канваса, true, чтобы включить


    Почитай что-ли гайды какие-нибудь по юнити или курс какой-нибудь пройди, если тебе такие элементарные вещи нужно объяснять.
  • Почему пуля пролетает сквозь коллайдеры тайлмапа?

    K0TlK
    @K0TlK
    Если коллайдер тонкий, то пуля просто не касается его, а телепортируется за него. Вместо MovePosition можешь изменять напрямую velocity, должно помочь. На deltaTime только скорость не умножай.
  • Не останавливается корутина. Что нужно дописать чтобы ее остановить?

    K0TlK
    @K0TlK
    я программирую один и делаю игру тоже один

    Но вопрос то ты задал сюда, соответственно уже не один ты смотришь на свой код. Методы должны называться глаголом, как назван твой класс TakeDamage, если же они что-то возвращают, можно называть и существительным. В твоем случае этот метод вообще не нужен, ты можешь при входе в триггер запускать корутину, при выходе останавливать, соответственно поле Trigger тоже не нужно.

    на данный момент мне это не нужно

    Если на данный момент это тебе что-то не нужно, это не значит, что оно не пригодится потом. Гораздо проще изначально писать код по стандартам, нежели после переучиваться со своего какого-то мордорского наречия. Дотнетовский кодстайл.
  • ИИ в игре работает странно. В чем проблема?

    K0TlK
    @K0TlK
    Bogdan1616, Ты думаешь, что кто-то кроме тебя захочет разбираться в том, что ты понаписал? Это нельзя называть интеллектом, что-то искусственное, но явно не интеллект. Посмотрев на твой апдейт, хочется только плакать. В этих условиях понять какого поведения ты хочешь добиться невозможно, а сам ты этого не написал.
  • Почему у объекта может импульс применяться неправильно?

    K0TlK
    @K0TlK
    yraiv, Не понял сути вопроса. Те компоненты, что нужны твоему компоненту для работы, ты либо получаешь в Awake либо в поле перетаскиваешь в инспекторе либо инициализируешь методом. Разница между Awake и перетаскиванием в инспекторе лишь в том, что при спавне объекта, вызовется Awake и все GetComponent, которые там есть, соответственно тоже вызовутся, чего при перетаскивании в инспекторе не должно быть (по идее). Но, если там и есть разница в скорости спавна объекта, то она меньше миллисекунды.
  • Почему у объекта может импульс применяться неправильно?

    K0TlK
    @K0TlK
    в чём причина?

    В том, что ты физику используешь там, где она не нужна.
  • Как можно сократить код в OnTriggerEnter2D?

    K0TlK
    @K0TlK
    WasTabon, Ты хочешь сделать какой-то интерактивный предмет? Чтобы, когда игрок находится рядом с ним, он мог взаимодействовать с ним? Тогда инпут тебе здесь вообще не нужен. Выделяешь интерфейс с методом Interact, реализуешь его в каком-нибудь абстрактном монобехе, впихиваешь свой код, наследники этого монобеха будут перезаписывать то, что вызывается при взаимодействии.

    Что-то типа этого:


    using UnityEngine;
    
    namespace Interaction
    {
        [RequireComponent(typeof(Collider2D))]
        public abstract class InteractiveItem<TComponent> : MonoBehaviour, IInteractive
        where TComponent : class
        {
            protected TComponent Component { get; private set; }
            
            private void Awake()
            {
                GetComponent<Collider2D>().isTrigger = true;
            }
    
            public void Interact()
            {
                if (Component != null) InteractInternal();
            }
    
            protected abstract void InteractInternal();
    
            private void OnTriggerEnter2D(Collider2D other)
            {
                if (other.TryGetComponent(out TComponent character))
                {
                    Component = character;
                }
            }
    
            private void OnTriggerExit2D(Collider2D other)
            {
                if (other.TryGetComponent(out TComponent character))
                {
                    Component = null;
                }
            }
        }
    }




    А инпут это вообще другое. Человек нажимает кнопку, скрипт, который обрабатывает инпут, говорит, что кнопка нажата, вызывается команда и эта команда уже говорит объекту персонажа попытаться поднять предмет. OnTriggerEnter здесь нужен только лишь, чтобы разрешить зависимость предмета от игрока. Ты либо делаешь это, либо делаешь так, чтобы игрок сам определял с чем он хочет взаимодействовать и раскидываешь все зависимости при инициализации игры.
  • Как можно сократить код в OnTriggerEnter2D?

    K0TlK
    @K0TlK
    Если так сделать, у него все сломается, когда в триггер зайдет объект, у которого есть тэг, а следом за ним объект, у которого этого тэга нет. В его случае лучше вовсе ничего не менять.
  • Как отловить момент клика?

    K0TlK
    @K0TlK
    Input.GetKeyDown(KeyCode.Mouse0) - нажатие.
    Input.GetKeyUp(KeyCode.Mouse0) - отжатие.
    Input.GetKey(KeyCode.Mouse0) - возвращает true, пока удерживаешь кнопку.
    Input.mousePosition - позиция курсора.

    Из твоего вопроса я ничего не понял что тебе нужно.
  • Как решить ошибку CS1061?

    K0TlK
    @K0TlK
    'GameObject' does not contain a definition for 'Tag'


    «GameObject» не содержит определения для «Tag». Дословный перевод гугла. Что здесь непонятного? У типа GameObject нет поля/метода/свойства Tag. Регистр важен.