• Почему OnTriggerStay2D работает не сразу?

    K0TlK
    @K0TlK
    Буллю людей.
    Потому что OnTriggerStay вызывается не каждый кадр. Отдели ввод игрока. WakeUp - костыль, которого не должно быть. Вот примерно то, что тебе надо:
    public class KeyboardInput : MonoBehaviour, IPlayerInput
    {
        public event Action ActionButtonPressed;
    
        private void Update()
        {
            if (Input.GetKeyDown(KeyCode.F))
            {
                ActionButtonPressed?.Invoke();
            }
        }
    }
    
    public interface IPlayerInput
    {
        public event Action ActionButtonPressed;
    }


    Отдельно инпут.

    [RequireComponent(typeof(Collider2D))]
    public class DialogueTrigger : MonoBehaviour
    {
        [SerializeField] private KeyboardInput _input;
    
        private void OnTriggerEnter2D(Collider2D collision)
        {
            if (collision.TryGetComponent(out Player player))
            {
                _input.ActionButtonPressed += StartDialogue;
            }
        }
    
        private void OnTriggerExit2D(Collider2D collision)
        {
            if (collision.TryGetComponent(out Player player))
            {
                _input.ActionButtonPressed -= StartDialogue;
                EndDialogue();
            }
        }
    
        private void StartDialogue()
        {
            Debug.Log("DialogueStarted");
        }
    
        private void EndDialogue()
        {
            Debug.Log("DialogueEnded");
        }
    
    }


    Отдельно все остальное. На входе подписываемся, на выходе отписываемся. Все. Не нужен никакой OnTriggerStay и WakeUp.
    Ответ написан
    8 комментариев
  • Как лучше всего строить карты в unity?

    motkot
    @motkot
    Программирование C#.
    Разница в гибкости. Например дом для своей игры мы строили с помощью блокаута в блендере, перенос в юнити и редактирование с помощью ProBuilder.

    Если строит из каких-нибудь кубов, то будет не удобно редактировать. Можно делать как вам удобно. Каждый раз редактировать в блендере .fbx или перенести его в юнити и редактировать из него с помощью ProBuilder
    Ответ написан
    3 комментария