Как сделать, чтобы 2d персонаж крутился за стиком джойстика

Общие вопросы о Unity3D

Как сделать, чтобы 2d персонаж крутился за стиком джойстика

Сообщение Frosmen 07 сен 2021, 20:50

В своей игре (где камера прямо над головой игрока), я сделал джойстик и для него скрипт. И основная задумка в том, чтобы персонаж, передвигаясь, крутился в ту сторону куда идёт. Но сумел сделать только передвижение, а поворот нет. Как мне его сделать?

Вот скрипт:

Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FhirdPersonCharaster2D : MonoBehaviour
{
    public float speed;
    Rigidbody2D rb;
    public Joystick joystick;
    private Vector2 moveVelocity;

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

    void Update()
    {
        Vector2 moveInput = new Vector2(joystick.Horizontal, joystick.Vertical);
        moveVelocity = moveInput.normalized * speed;
    }

    private void FixedUpdate()
    {
        rb.MovePosition(rb.position + moveVelocity * Time.deltaTime);
    }
}
Frosmen
UNец
 
Сообщения: 20
Зарегистрирован: 16 авг 2021, 20:48

Re: Как сделать, чтобы 2d персонаж крутился за стиком джойстика

Сообщение NICO 07 сен 2021, 21:20

У вас по осям X и Y персонаж перемещается? Самый простой и банальный способ - задать вращение через transform.Rotate(new Vector3(0, 0, 0)) - здесь меняйте значения 0 на 1 или -1 именно в той оси, в которой вам необходимо вращение. Пропишите в этом же скрипте, что ежели RIGIDBODY на персонаже меньше/больше 0 по конкретной оси, то происходит вращение. Что-то вроде того:
Синтаксис:
Используется csharp
if (rb.velocity.x > 0)
{
    transform.Rotate(new Vector3(1, 0, 0));
}

if (rb.velocity.x < 0)
{
    transform.Rotate(new Vector3(-1, 0, 0));
}
 

Опять же, с конкретными осями поиграйте сами, мы не видим ваш проект. И то же самое по второй оси.
Можно попробовать что-то более развитое - с полной привязкой к RIGIDBODY. Это - самый банальный способ, наверное...
NICO
UNIт
 
Сообщения: 123
Зарегистрирован: 30 июл 2021, 23:30

Re: Как сделать, чтобы 2d персонаж крутился за стиком джойстика

Сообщение NICO 07 сен 2021, 22:56

Frosmen писал(а):В своей игре (где камера прямо над головой игрока), я сделал джойстик и для него скрипт. И основная задумка в том, чтобы персонаж, передвигаясь, крутился в ту сторону куда идёт. Но сумел сделать только передвижение, а поворот нет. Как мне его сделать?

Вот скрипт:

Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FhirdPersonCharaster2D : MonoBehaviour
{
    public float speed;
    Rigidbody2D rb;
    public Joystick joystick;
    private Vector2 moveVelocity;

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

    void Update()
    {
        Vector2 moveInput = new Vector2(joystick.Horizontal, joystick.Vertical);
        moveVelocity = moveInput.normalized * speed;
    }

    private void FixedUpdate()
    {
        rb.MovePosition(rb.position + moveVelocity * Time.deltaTime);
    }
}

И да, кстати, вы написали, что это 2D, а сам персонаж что собой представляет? Обычный спрайт или 3D объект? Ежели обычный спрайт, то не совсем понятно, как вы хотите добиться вращения обычной картинки во все стороны... Только в две стороны можно вращать объект на сцене в 2D игре, создавая видимость реальных вращений, а в остальные стороны просто спрайт станет переворачиваться, как лист. Скорее всего, вы не этого хотите добиться...
NICO
UNIт
 
Сообщения: 123
Зарегистрирован: 30 июл 2021, 23:30

Re: Как сделать, чтобы 2d персонаж крутился за стиком джойстика

Сообщение Frosmen 08 сен 2021, 08:56

И да, кстати, вы написали, что это 2D, а сам персонаж что собой представляет? Обычный спрайт или 3D объект? Ежели обычный спрайт, то не совсем понятно, как вы хотите добиться вращения обычной картинки во все стороны... Только в две стороны можно вращать объект на сцене в 2D игре, создавая видимость реальных вращений, а в остальные стороны просто спрайт станет переворачиваться, как лист. Скорее всего, вы не этого хотите добиться...

Я хотел вообще сделать так, чтобы он поворачивался в ту сторону, в которую идёт
Frosmen
UNец
 
Сообщения: 20
Зарегистрирован: 16 авг 2021, 20:48

Re: Как сделать, чтобы 2d персонаж крутился за стиком джойстика

Сообщение NICO 08 сен 2021, 14:39

Frosmen писал(а):
И да, кстати, вы написали, что это 2D, а сам персонаж что собой представляет? Обычный спрайт или 3D объект? Ежели обычный спрайт, то не совсем понятно, как вы хотите добиться вращения обычной картинки во все стороны... Только в две стороны можно вращать объект на сцене в 2D игре, создавая видимость реальных вращений, а в остальные стороны просто спрайт станет переворачиваться, как лист. Скорее всего, вы не этого хотите добиться...

Я хотел вообще сделать так, чтобы он поворачивался в ту сторону, в которую идёт

А... Надо было и написать про это, а то вы высказались несколько иначе... Здесь не решение проблемы: https://coderoad.ru/44530235/%D0%95%D0% ... 0%BB%D0%B8 ?
NICO
UNIт
 
Сообщения: 123
Зарегистрирован: 30 июл 2021, 23:30

Re: Как сделать, чтобы 2d персонаж крутился за стиком джойстика

Сообщение NICO 08 сен 2021, 14:51

Frosmen писал(а):
И да, кстати, вы написали, что это 2D, а сам персонаж что собой представляет? Обычный спрайт или 3D объект? Ежели обычный спрайт, то не совсем понятно, как вы хотите добиться вращения обычной картинки во все стороны... Только в две стороны можно вращать объект на сцене в 2D игре, создавая видимость реальных вращений, а в остальные стороны просто спрайт станет переворачиваться, как лист. Скорее всего, вы не этого хотите добиться...

Я хотел вообще сделать так, чтобы он поворачивался в ту сторону, в которую идёт

Ой, ***, в этот раз я сам не то спорол... Вам поворот же надо, а не движение... Банально менять значения в оси Rotation в зависимости от направления движения пробовали? А в идеале создать анимации, конечно же. Эффект обычных поворотов - такое себе дело. С анимацией все было бы интереснее и реалистичнее...
NICO
UNIт
 
Сообщения: 123
Зарегистрирован: 30 июл 2021, 23:30


Вернуться в Общие вопросы

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 16