Как реализовать перетаскивание осей в единстве - PullRequest
1 голос
/ 27 марта 2019

Я пытался реализовать инструмент перемещения, похожий на тот, который встроен в редактор Unity.После неудачи я потратил много часов, пытаясь найти способ сделать это.Я придумал это:

Plane groundPlane = new Plane(Vector3.up, Tracked.position);
Plane rightPlane = new Plane(Vector3.right, Tracked.position);
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    RaycastHit hit;
    switch (axis)
    {
        case Axis.X:
            if (groundPlane.Raycast(ray, out ent))
            {
                float deltaPosX = ray.GetPoint(ent).x - lastHitPos.x;
                Tracked.position = new Vector3(Tracked.position.x + deltaPosX, Tracked.position.y, Tracked.position.z);
                lastHitPos = ray.GetPoint(ent);
            }
            break;
        case Axis.Y:
            if (rightPlane.Raycast(ray, out ent))
            {
                float deltaPosY = ray.GetPoint(ent).y - lastHitPos.y;
                Tracked.position = new Vector3(Tracked.position.x, Tracked.position.y + deltaPosY, Tracked.position.z);
                lastHitPos = ray.GetPoint(ent);
            }
            break;
        case Axis.Z:
            if (groundPlane.Raycast(ray, out ent))
            {
                float deltaPosZ = ray.GetPoint(ent).z - lastHitPos.z;
                Tracked.position = new Vector3(Tracked.position.x, Tracked.position.y, Tracked.position.z + deltaPosZ);
                lastHitPos = ray.GetPoint(ent);
            }
            break;
    }

Исправлены ссылки!Редактор Unity: https://youtu.be/I0DAVa7GIeo
Что у меня сейчас есть: https://youtu.be/cTykv-KTNOY

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