Проект - 2д платформер на Unity.
Суть вопроса вот в чём - как сделать так, чтобы предметы, которые высыпаются с чего-то (враг, контейнер) не проваливались под землю, а рассыпались по ней. Даже если предметы высыпались на платформу над землёй, то они свободно могут некоторые упасть ниже на основной ground и там замереть, ожидая подбора игроком.
using UnityEngine;
public class ManaDrop : MonoBehaviour
{
public GameObject manaPrefab;
public int minManaDrops = 1;
public int maxManaDrops = 5;
public float dropForce = 1f;
public void DropMana(Vector2 dropPosition)
{
int numberOfDrops = Random.Range(minManaDrops, maxManaDrops + 1);
for (int i = 0; i < numberOfDrops; i++)
{
GameObject mana = Instantiate(manaPrefab, dropPosition, Quaternion.identity);
Rigidbody2D manaRigidbody = mana.GetComponent<Rigidbody2D>();
Vector2 randomDirection = Random.insideUnitCircle;
manaRigidbody.AddForce(randomDirection * dropForce, ForceMode2D.Impulse);
}
}
}
Для примера я создал скрипт и навесил его на врага, который после смерти случайно высыпает от 1 до 5 префабов маны на пол. Всё работает, но сами префабы летят сквозь всё. Проблема в том, что на префабе я навесил коллайдер с триггером и физику, а значит коллайдер неосязаем. Я настроил слои и физику слоёв в настройках, но всё равно ничего. На YouTube не нашёл ничего подобного, только обычные монетки на уровне.
Подскажите как такое лучше сделать. Реализовано подобное в Hollow Knight например. Ну и в будущем создам скилл, который будет притягивать эти выпавшие префабы к игроку.