есть два объекта, например: два электрических проводника - два куска провода, которые имеют по два оголенных конца соответственно. На проводах есть колайдеры и мне нужно чтобы при поднесении одного оголенного конца провода к другому оголенному концу провода выводилось каким именно концом первого провода(первым концом или вторым) я соприкоснулся со вторым куском провода. Есть вроде бы свойства типо .contacts для определения точки соприкосновения, но ничего так и не вышло. Пытался сделать два бокс колайдера по одному на концах, чтобы знать каким колайдером точно прикоснулся, но не знаю как в коде идентифицировать их по отдельности. Так что надеюсь на вашу помощь. Заранее Спасибо!
Проще, наверное, всё таки сделать два коллайдера) если вы не хотите отлавливать касания посреди коллайдера. Можете хоть круглые для аутентичности.
Идентифицировать их очень просто) просто не нужно отлавливать одним и тем же скриптом оба коллайдера. Пишется два класса - первый вешается на конкретный коллайдер и отлавливает вхождения именно в него, а второй подписывается на первые и что-то делает исходя из того, какой именно класс отловил вхождение/выход.
class ColliderHandler : MonoBehaviour
{
public event Action<Collision> OnColliderEnterEvent = delegate { };
public event Action<Collision> OnColliderExitEvent = delegate { };
void OnCollisionEnter(Collision collision) => OnColliderEnterEvent (collision);
void OnCollisionExit(Collision collision) => OnColliderExitEvent(collision);
}
class Wire : MonoBehaviour
{
[SerializeField]
ColliderHandler _left;
[SerializeField]
ColliderHandler _right;
private void OnEnable()
{
_left.OnColliderEnterEvent += OnLeftEnter;
_left.OnColliderExitEvent += OnLeftExit;
_right.OnColliderEnterEvent += OnRightEnter;
_right.OnColliderExitEvent += OnRightExit;
}
private void OnDisable()
{
_left.OnColliderEnterEvent -= OnLeftEnter;
_left.OnColliderExitEvent -= OnLeftExit;
_right.OnColliderEnterEvent -= OnRightEnter;
_right.OnColliderExitEvent -= OnRightExit;
}
private void OnLeftExit(Collision2D obj)
{
}
private void OnLeftEnter(Collision2D obj)
{
}
private void OnRightEnter(Collision2D obj)
{
}
private void OnRightExit(Collision2D obj)
{
}
}
Делаете объект-родитель "Провод" ему добавляете Wire
, объекту делаете два чайлда - "КонецПровода" и добавляете им компоненты Collider2d (или любой другой какой вам нужен) и компонент ColliderHandler
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
нужно умножить матрицу на вектор, при этом должна быть доступна полная манипуляция с матрицей, сколько бьюсь никак не получается, помогите,...
В WPF/MVVM приложении в модели нужно получить значение слайдера из формы, как это сделать? Мой метод не работает
Нужно преобразовать строку (string) "Ноя 2018" в дату (DateTime)Делаю все внутри конструктора Xamarin
Необходимо найти индекс элемента, максимально приближенного к среднему арифметическому и записать в linq форме