Нужно создать префаб в позиции мыши - PullRequest
0 голосов
/ 19 октября 2019

Итак, я перетаскиваю 2D-спрайты с холста и создаю экземпляр 3D-объекта. Но проблема в том, что префабы появляются в их местоположении по умолчанию. Это код. Удалены все вещи, которые я пытался создать

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

Вы ничего не делаете с позицией объектов, поэтому она будет появляться в начале координат.

Не видя ваш проект, трудно угадать, что ваша игра требует для размещения поведения, я предполагаю, что у вас есть некоторыеокружение, в которое вы хотите поместить его, и это легко сделать с помощью Physics.Raycast(). Но если вы не находитесь в какой-либо среде, вы можете запустить луч из положения мыши и спроецировать его на произвольную величину вперед от камеры и поместить объект туда для хорошего эффекта.

Этого фрагмента должно быть достаточнодля этого:

public float raycastDistance = 10f;
public float projectDistance = 4f;

public void OnEndDrag(PointerEventData eventData)
{
    var spawned = Instantiate(prefab);

    var ray = Camera.main.ScreenPointToRay(eventData.position);

    if (Physics.Raycast(ray, out RaycastHit hit, raycastDistance)
    {
        spawned.transform.position = hit.point;
    }
    else
    {
        spawned.transform.position = Camera.main.transform.position + (ray * projectDistance);
    }
}

Если вы предпочитаете, вы можете обновить позицию порожденного объекта в OnDrag() вместо того, чтобы просто установить его в OnDragEnd(), что может выглядеть довольно неплохо, если вы интерполируете положение объектанемного, как мышь двигается.

0 голосов
/ 19 октября 2019

Вы пытаетесь создать префаб без указания позиции для создания экземпляра. Попробуйте что-то вроде этого.

public void OnEndDrag(PointerEventData eventData)
    {
        Instantiate(prefab,eventData.position);
    }

Ссылка: https://docs.unity3d.com/ScriptReference/Object.Instantiate.html https://docs.unity3d.com/2017.3/Documentation/ScriptReference/EventSystems.PointerEventData-position.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...