Правильный спавн префабов на сцене (определение позиции)

Программирование на Юнити.

Правильный спавн префабов на сцене (определение позиции)

Сообщение programmist_derevo 31 мар 2018, 21:01

Всем привет! Не могу допереть, как реализовать казалось бы не сложную вещь.
Есть префаб куба(физическое тело). Есть комната со стенами и полом. Есть игрок, который кликает мышкой. По клику мышки куда игрок ткнул, в той точке и спавнится куб.
Проблема в том, что префаб имеет объем, он не точка. И если спавнить его в точке - он появится наполовину в стене или в полу. И вылетит пулей оттуда (вытолкнет физика).
Вот как определять вообще позицию в такой ситуации? Я еще разобрался, как спавнить всегда над землей (надо сместить центр объекта к низу), но если еще сбоку что-то мешает ему (стена например или другой объект) - это уже не помогает. :-?

Ай нид хелп!

картинка для пояснения:
Изображение
Последний раз редактировалось programmist_derevo 31 мар 2018, 21:42, всего редактировалось 1 раз.
Аватара пользователя
programmist_derevo
UNец
 
Сообщения: 38
Зарегистрирован: 02 фев 2017, 18:13

Re: Правильный спавн префабов на сцене (определение позиции)

Сообщение 1max1 31 мар 2018, 21:28

Рейкастишь в плоскость берешь ее нормаль и по этой нормали смещаешь свой объект на нужную ширину / высоту.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Правильный спавн префабов на сцене (определение позиции)

Сообщение programmist_derevo 31 мар 2018, 21:44

1max1 писал(а):Рейкастишь в плоскость берешь ее нормаль и по этой нормали смещаешь свой объект на нужную ширину / высоту.

Можно по-подробнее об этом?
Прикрепил картинку-пример к шапке.
Аватара пользователя
programmist_derevo
UNец
 
Сообщения: 38
Зарегистрирован: 02 фев 2017, 18:13

Re: Правильный спавн префабов на сцене (определение позиции)

Сообщение lawsonilka 01 апр 2018, 10:14

Лучше всего было бы иметь сетку на которой и спавнишь префабы, хотя бы небольшую локальную сетку.
lawsonilka
UNIверсал
 
Сообщения: 390
Зарегистрирован: 21 окт 2014, 14:48

Re: Правильный спавн префабов на сцене (определение позиции)

Сообщение 1max1 01 апр 2018, 11:50

Пример с нормалью (не будет работать корректно если пульнуть в место стыка со стеной и полом к примеру).
Вешать на камеру.
Синтаксис:
Используется csharp
class Spawner : MonoBehaviour
{
    [SerializeField] GameObject _cube;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            RaycastHit hitInfo;

            if (Physics.Raycast(new Ray(transform.position, transform.forward), out hitInfo))
            {
                var cube = Instantiate(_cube);

                cube.transform.position = hitInfo.point + hitInfo.normal * 0.5f; // 0.5 это ширина куба / 2

                Destroy(cube, 3.0f);
            }
        }
    }
}
 
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Правильный спавн префабов на сцене (определение позиции)

Сообщение labinzevvAlex 17 июл 2020, 22:24

Как вариант ограничить спавн координатами, на расстояние равное расстоянию от центра куба, до его коллайдера или чуть больше, по осям X и Z
labinzevvAlex
UNIт
 
Сообщения: 74
Зарегистрирован: 12 июл 2020, 12:18


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14