Предполагая, что ваши дропс уже обнаружены, как вы говорите, и вопрос больше в том, как различать объекты, я бы использовал простой enum
например
public enum WhichObject
{
red,
blue
}
преимущество в том, что позже вы можете оченьлегко добавлять дополнительные параметры, не имея дело со слоями, тегами и т. д.
В GameObject вы перетаскиваете добавить компонент, например,
public class ObjectInformation
{
public WhichObject IsObject;
}
и просто выбираете в Инспекторе (или, если вы порождаетечерез скрипт) для каждого из перетаскиваемых объектов, значение которого должно иметь переменная WhichObject
.
Чем на целевых объектах, где вы обнаруживаете столкновение, также добавьте переменную WhichObject
, но на этот раз настройте значение, которое выожидайте, что его здесь отбросят
public WhichObject ExpectedObject;
, снова установите его через инспектор или скрипт.
Чем просто добавить чек
var info = droppedObject.GetComponent<ObjectInformation>();
// Something else dropped?
if(!info) return;
// Now check if the value matches
// the one this object expects
if(info.IsObject == ExpectedObject)
{
// Correct object
Debug.Log("Yeah!");
}
else
{
// Wrong object
Debug.LogFormat("Dropped object {0} does not match the expected object {1}!", info.IsObject, ExpectedObject);
}
Позже вы также можетепросто расширьте его, используя несколько перечислений, таких как, например, цвета, формы и т. д.
И, возможно, вы могли бы также сделать проверку наоборот и проверить перетаскиваемый объект, если values match и если не совпадают, даже не позволяют быть отброшенными на этом целевом объекте (это, конечно, зависит от вашей реализации).