Страница 1 из 1

Перемещение (вращение)объекта вокруг "якоря"

СообщениеДобавлено: 24 мар 2021, 07:12
Flash14243
Всем привет, столкнулся с такой проблемой как вращение объекта вокруг персонажа.

Суть: Нужно что бы маркер(Sprite) вращался вверх-вниз как бы огибая половину круга перед персонажем, при повороте персонажа соответственно, что бы перед лицом так же оставался маркер.

Я кучу ссылок просмотрел, много испробовал, но то что я хотел сделать, даже близко не получалось.
При попытке сделать это "Маркер" вращался вокруг центра экрана и при повороте персонажа, он резко увеличивал свой радиус.
Хотя я привязывал его к "Якорю"(Пустой гейм объект на игроке). Так же пробовал RotateAround, но он у меня вращался в основном по z.

И ещё, если это получится у вас сделать, можно будет без проблем к этому маркеру добавить точку для выстрела(тоже пустой объект), что бы она без прерываний работала. Если не получится, напишите об этом пожалуйста, я тогда сам допишу, что бы он следовал за маркером.

Если нужны скрины и прочее, отправлю, как увижу сообщение на форуме.
Заранее спасибо за помощь.

Re: Перемещение (вращение)объекта вокруг "якоря"

СообщениеДобавлено: 24 мар 2021, 08:43
1max1
Скрины или видео не помешало бы, я не очень понимаю что за маркер и зачем он нужен.

Re: Перемещение (вращение)объекта вокруг "якоря"

СообщениеДобавлено: 24 мар 2021, 11:18
Flash14243
https://imgur.com/a/3Pt4GZ4
Жёлтым я нарисовал полукруг, по которому должен двигаться маркер
А зелёный - это уже его путь когда персонаж поворачивается.
То есть маркер всегда огибает только половину круга, только в разных сторонах

Re: Перемещение (вращение)объекта вокруг "якоря"

СообщениеДобавлено: 24 мар 2021, 11:56
TeslaGan
в плане идеи можно написать что-то подобное(нет под рукой компа, могут быть ошибки):
Синтаксис:
Используется csharp
    public float Distance;
    public transform Anchor;
    private Vector3 _mousePosition;

    void Update()
    {
        _mousePosition=Input.mousePosition;
       
        //_mousePosition.z=Camera.main.nearClipPlane; //если игра не 2д
        _mousePosition=Camera.main.ScreenToWorldPoint(_mousePosition);
        //_mousePosition.z=transform.position.z; если игра 2д
                if (transform.rotation.x*_mousePosition.x<0) //transform.rotation.x - хранит направление поворота игрока, его надо менять, на то, что у тебя в коде задает его
            _mousePosition.x*=-1;
        Anchor.position = (transform.position+Vector3.Normalize(_mousePosition-transform.position)*Distance);

набросал что-то такое...
p.s. вообще с такими вопросами(а особенно "если это получится у вас сделать"@Flash14243) надо идти в платный раздел

Re: Перемещение (вращение)объекта вокруг "якоря"

СообщениеДобавлено: 24 мар 2021, 11:57
Alkos26Rus
сделай один дочерний объект(номер1) внутри персонажа на нулевых позициях, затем в этот дочерний объект засунь свой маркер(номер2) уже со смещением по Х, и вращай объект(номер1) по нужной оси(не помню какая в 2д) локально с ограничением в 180 градусов и это все будет работать при развароте если ты поворачиваешь персонаж отрицательным scale

Re: Перемещение (вращение)объекта вокруг "якоря"

СообщениеДобавлено: 24 мар 2021, 16:13
Flash14243
TeslaGan писал(а):в плане идеи можно написать что-то подобное(нет под рукой компа, могут быть ошибки):
Синтаксис:
Используется csharp
    public float Distance;
    public transform Anchor;
    private Vector3 _mousePosition;

    void Update()
    {
        _mousePosition=Input.mousePosition;
       
        //_mousePosition.z=Camera.main.nearClipPlane; //если игра не 2д
        _mousePosition=Camera.main.ScreenToWorldPoint(_mousePosition);
        //_mousePosition.z=transform.position.z; если игра 2д
                if (transform.rotation.x*_mousePosition.x<0) //transform.rotation.x - хранит направление поворота игрока, его надо менять, на то, что у тебя в коде задает его
            _mousePosition.x*=-1;
        Anchor.position = (transform.position+Vector3.Normalize(_mousePosition-transform.position)*Distance);

набросал что-то такое...
p.s. вообще с такими вопросами(а особенно "если это получится у вас сделать"@Flash14243) надо идти в платный раздел

Я так понял это что бы он двигался за мышью, но это немного не то что мне нужно.
А что за платный раздел, я тут вроде 2 года, иногда захожу, но никогда не видел/слышал об этом.

Re: Перемещение (вращение)объекта вокруг "якоря"

СообщениеДобавлено: 24 мар 2021, 16:46
waruiyume

Re: Перемещение (вращение)объекта вокруг "якоря"

СообщениеДобавлено: 25 мар 2021, 10:09
TeslaGan
Flash14243 писал(а):Я так понял это что бы он двигался за мышью, но это немного не то что мне нужно.
А что за платный раздел, я тут вроде 2 года, иногда захожу, но никогда не видел/слышал об этом.

тогда сделайте как вам посоветовал Alkos26Rus, этот вариант будет оптимальным. или еще как вариант - поищите как люди делают радиальные слайдеры