@niklazh
да.

Что за странная ошибка при слоях в Unity?

есть объект врага
public float health;
    public float attack;
    [SerializeField] private float Raydistance;
    [SerializeField] private LayerMask layer;
    [SerializeField] private Collider2D HeroCollider;
    private bool canMove;
    private Vector2 direction;
    [SerializeField] private Rigidbody2D skeleton;
    [SerializeField] private Rigidbody2D rghero;
    // Start is called before the first frame update


он выпускает рейкасты
void waiting()
    {
        RaycastHit2D hit = Physics2D.Raycast(skeleton.position, direction - skeleton.position, Raydistance, layer);
        Debug.DrawRay(skeleton.position, direction - skeleton.position, UnityEngine.Color.red);
   //если тот колайдер в который стукнулся луч - колайдер персонажа, то true
        if (hit.collider == HeroCollider)
        {
            print(hit);
            agro();
        }
    }

void agro()
        {
            RaycastHit2D hit2 = Physics2D.Raycast(skeleton.position, direction - skeleton.position, 0.6f, layer);

            Debug.DrawRay(skeleton.position, direction - skeleton.position, UnityEngine.Color.green);

            if (canMove == true)
            {
                if (hit2.collider == null)
                {

                    print("i found you");
                    
                    if (skeleton.position.x != rghero.position.x) 
                    {
                        if (skeleton.position.x < rghero.position.x)
                        {
                            skeleton.MovePosition(skeleton.position + new Vector2(1, 0));
                            StartCoroutine(DelayMovement());
                        }

                        if (skeleton.position.x > rghero.position.x)
                        {
                            skeleton.MovePosition(skeleton.position - new Vector2(1, 0));
                            StartCoroutine(DelayMovement());
                        }
                    }

                    if (skeleton.position.x == rghero.position.x)
                    {
                        if (skeleton.position.y < rghero.position.y)
                        {
                            skeleton.MovePosition(skeleton.position + new Vector2(0, 1));
                            StartCoroutine(DelayMovement());
                        }

                        if (skeleton.position.y > rghero.position.y)
                        {
                            skeleton.MovePosition(skeleton.position - new Vector2(0, 1));
                            StartCoroutine(DelayMovement());
                        }
                    }
                }
            }
       }


в самом юнити устанавливаю вот такие параметры
6590859f261cb401346857.png

но при попытке засунуть в маску слоя 2 параметра слой с игроком и слой с стенками получаю ошибку

ArgumentNullException: Value cannot be null.
Parameter name: _unity_self
UnityEditor.SerializedObject.FindProperty (System.String propertyPath) (at <bf6080dbf0564cf1b405dfd6e0dac725>:0)
UnityEditor.UIElements.Bindings.SerializedObjectBindingContext.BindPropertyRelative (UnityEngine.UIElements.IBindable field, UnityEditor.SerializedProperty parentProperty) (at <68ddc6fd093848298397957a5969af5e>:0)
UnityEditor.UIElements.Bindings.SerializedObjectBindingContext.BindTree (UnityEngine.UIElements.VisualElement element, UnityEditor.SerializedProperty parentProperty) (at <68ddc6fd093848298397957a5969af5e>:0)
UnityEditor.UIElements.Bindings.SerializedObjectBindingContext.ContinueBinding (UnityEngine.UIElements.VisualElement element, UnityEditor.SerializedProperty parentProperty) (at <68ddc6fd093848298397957a5969af5e>:0)
UnityEditor.UIElements.Bindings.DefaultSerializedObjectBindingImplementation+BindingRequest.Bind (UnityEngine.UIElements.VisualElement element) (at <68ddc6fd093848298397957a5969af5e>:0)
UnityEngine.UIElements.VisualTreeBindingsUpdater.Update () (at <a053cdfb5a094ce2b5935515091f978f>:0)
UnityEngine.UIElements.VisualTreeUpdater.UpdateVisualTreePhase (UnityEngine.UIElements.VisualTreeUpdatePhase phase) (at <a053cdfb5a094ce2b5935515091f978f>:0)
UnityEngine.UIElements.Panel.UpdateBindings () (at <a053cdfb5a094ce2b5935515091f978f>:0)
UnityEngine.UIElements.UIElementsUtility.UnityEngine.UIElements.IUIElementsUtility.UpdateSchedulers () (at <a053cdfb5a094ce2b5935515091f978f>:0)
UnityEngine.UIElements.UIEventRegistration.UpdateSchedulers () (at <a053cdfb5a094ce2b5935515091f978f>:0)
UnityEditor.RetainedMode.UpdateSchedulers () (at <68ddc6fd093848298397957a5969af5e>:0)


при чём именно при попытке засунуть туда слой со стенками, хотя для персонажа, с таким же Raycast'ом всё нормально, ему слой со стенками не мешает

если нужна какая-то доп. инфа обязательно скину
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
@niklazh Автор вопроса
да.
Кароче, я в душе не понимаю что не так, но я сегодня проснулся, запустил проект И ОНО ВСЁ ЗАРАБОТАЛО САМО, при условии, что я абсолютно ничего не менял.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы