TopDown 2D управление персонажем

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

TopDown 2D управление персонажем

Сообщение MrDmitry 07 окт 2021, 17:46

Как сделать правильное управление персонажем с видом сверху(2D)?

Хочу сделать что то типо того

https://www.youtube.com/watch?v=X36-jM- ... 0%9F%8E%AE

Сейчас персонаж вертится за мышкой.

Синтаксис:
Используется csharp
public class MouseController : MonoBehaviour
{
    private Vector2 Direction;
    private Rigidbody2D _rb;

    void Start()
    {
        _rb = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        Direction = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    }

    private void FixedUpdate()
    {
        Vector2 LookDir = Direction - _rb.position;
        float angle = Mathf.Atan2(LookDir.y, LookDir.x) * Mathf.Rad2Deg - 90f;
        _rb.rotation = angle;
    }
}


Но вот как сделать правильно перемещение, я не совсем понимаю. Нужно чтоб персонаж двигался в сторону направления мыши, при нажатии клавиши вперед(W) и соответственно "Стрейфил" при нажатии A или D и шел назад от мыши при нажатии S. Сейчас же он просто ходит по "Направляющим"


Синтаксис:
Используется csharp
public class KeyboardController : MonoBehaviour
{
    [SerializeField]
    private float Speed = 5f;
    private Vector2 Movement;
    private Rigidbody2D _rb;

    void Start()
    {
        _rb = GetComponent<Rigidbody2D>();
    }

    private void Update()
    {
        Movement.x = Input.GetAxisRaw("Horizontal");
        Movement.y = Input.GetAxisRaw("Vertical");
    }

    private void FixedUpdate()
    {
        _rb.velocity = Movement * Speed;
    }
}
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21

Re: TopDown 2D управление персонажем

Сообщение 1max1 07 окт 2021, 19:53

Нужно чтоб персонаж двигался в сторону направления мыши, при нажатии клавиши вперед(W) и соответственно "Стрейфил" при нажатии A или D и шел назад от мыши при нажатии S.

Это очень неудобно, но коль надо, тогда смотри в сторону https://docs.unity3d.com/ScriptReferenc ... ction.html
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: TopDown 2D управление персонажем

Сообщение MrDmitry 08 окт 2021, 17:02

Синтаксис:
Используется csharp
private void FixedUpdate()
    {
        transform.TransformDirection(Movement);
    }


На движение это не повлияло (
MrDmitry
UNITрон
 
Сообщения: 223
Зарегистрирован: 05 авг 2017, 17:21

Re: TopDown 2D управление персонажем

Сообщение Alkos26Rus 08 окт 2021, 17:43

MrDmitry писал(а):
Синтаксис:
Используется csharp
private void FixedUpdate()
    {
        transform.TransformDirection(Movement);
    }


На движение это не повлияло (

Синтаксис:
Используется csharp
_rb.velocity = transform.TransformDirection(Movement) * Speed;
 
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва


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

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

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