есть объект врага
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());
}
}
}
}
}
в самом юнити устанавливаю вот такие параметры
но при попытке засунуть в маску слоя 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'ом всё нормально, ему слой со стенками не мешает
если нужна какая-то доп. инфа обязательно скину