Grayfox90
@Grayfox90
Пушистый дядь

Как правильно сделать «рассыпание» предметов из врага/сундука в Unity 2d?

Проект - 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 например. Ну и в будущем создам скилл, который будет притягивать эти выпавшие префабы к игроку.
  • Вопрос задан
  • 335 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы