История такая -- понастроил я тут боксколлайдеров (го), всем поставил галку на IsTrigger, повесил на них скрипт-обработчик (StepBCDHandler) выделением всех ГО и перетаскиванием на них скрипта (может быть, важно), а потом создал пустышку с навешенным на неё скриптом-подписчиком (MainIntelligenceDirectorate, почему так странно — потому что все боксколлайдеры помечены тегом spy, Скрипали ж), вроде как всё замечательно работает, ошыбок не выдает, всякую нумерологию в виде таблиц из мануала по коллайдерам изучил, проверил, а всё равно — Орден "Ноль", ничего не выдает, лист на единицы не увеличивается.
Грешу на код, но вопрос остается -- ЧЯДНТ?
Код шпиона:
Синтаксис:
Используется csharp
using System;
using UnityEngine;
using System.Collections.Generic;
public class StepBCDHandler : MonoBehaviour
{
#region Events
/// <summary>
/// Вызывается, когда срабатывает OnTriggerEnter
/// </summary>
public EventHandler<StepBCDHandlerArgs> TriggerEnter = delegate { };
/// <summary>
/// Вызывается, когда срабатывает OnTriggerExit
/// </summary>
#endregion
private void OnTriggerEnter(Collider other)
{
TriggerEnter(this, new StepBCDHandlerArgs { Collider = other, Coordinates = transform.position });
}
public class StepBCDHandlerArgs : EventArgs
{
public Collider Collider { get; set; }
public Vector3 Coordinates { get; set; }
}
}
using UnityEngine;
using System.Collections.Generic;
public class StepBCDHandler : MonoBehaviour
{
#region Events
/// <summary>
/// Вызывается, когда срабатывает OnTriggerEnter
/// </summary>
public EventHandler<StepBCDHandlerArgs> TriggerEnter = delegate { };
/// <summary>
/// Вызывается, когда срабатывает OnTriggerExit
/// </summary>
#endregion
private void OnTriggerEnter(Collider other)
{
TriggerEnter(this, new StepBCDHandlerArgs { Collider = other, Coordinates = transform.position });
}
public class StepBCDHandlerArgs : EventArgs
{
public Collider Collider { get; set; }
public Vector3 Coordinates { get; set; }
}
}
Код собирателя инфы со шпионов:
Синтаксис:
Используется csharp
using System;
using System.Collections.Generic;
using UnityEngine;
public class MainIntelligenceDirectorate : MonoBehaviour
{
[SerializeField] private StepBCDHandler _handler;
[SerializeField] GameObject[] _massiveBCD;
void Awake()
{
_handler.TriggerEnter += OnHandlerTriggerEntered;
foreach (var item in _massiveBCD)
{
_handler.TriggerEnter += OnHandlerTriggerEntered;
}
}
private void OnHandlerTriggerEntered(object sender, EventArgs args)
{
var arg = (StepBCDHandlerArgs)args;
var item = arg.Collider.transform.position;
}
public class StepBCDHandlerArgs : EventArgs
{
public Collider Collider { get; set; }
public Vector3 Coordinates { get; set; }
}
}
using System.Collections.Generic;
using UnityEngine;
public class MainIntelligenceDirectorate : MonoBehaviour
{
[SerializeField] private StepBCDHandler _handler;
[SerializeField] GameObject[] _massiveBCD;
void Awake()
{
_handler.TriggerEnter += OnHandlerTriggerEntered;
foreach (var item in _massiveBCD)
{
_handler.TriggerEnter += OnHandlerTriggerEntered;
}
}
private void OnHandlerTriggerEntered(object sender, EventArgs args)
{
var arg = (StepBCDHandlerArgs)args;
var item = arg.Collider.transform.position;
}
public class StepBCDHandlerArgs : EventArgs
{
public Collider Collider { get; set; }
public Vector3 Coordinates { get; set; }
}
}
Сам БоксКоллайдер:
Скрытый текст:
Тестовая сфера для определения работы скриптов (будет заменена на крипа с кинематикой)
Скрытый текст:
Скриптхолдер с собирателем инфы с шпионов:
Скрытый текст:
А вот как это искусство выглядит при игре, в скрипихолдере собирателя Size дает мне орден:
Скрытый текст:
Для справки:
Вся эта затея затевается для того, чтобы поворачивать бошку мортиры к цели (чтобы снаряд летел по параболе).
Вместе с тем, чтобы не растекаться по темам, так как вопрос связанный, что лучше, пускать луч Рейкаста к крипам, или оставить такими вот плитками?