Изменение спрайта в зависимости от положения курсора.

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

Изменение спрайта в зависимости от положения курсора.

Сообщение SakuraDevil 30 июл 2018, 15:20

Доброго времени суток! Очень хочется сделать управление персонажем как в Enter the gungeon, но как это сделать ума дать не могу. Есть 8 спрайтов (с разными направлениями) и нужно чтобы за мышкой персонаж как бы крутился. Просто передвижение в 8 направлений используя W A S D и Blend Tree сделать получалось но это не то. Персонаж должен вертеться за курсором и менять спрайты. Так же получалось просто не анимированный спрайт крутить и то в 4 направления используя массивы, но как именно с анимациями туда вставить не знаю. В интернете рылся и все что удавалось найти, это просто вращение спрайта и его отражение (влево и вправо) в зависимости от расположения курсора и это тоже не походит.Буду очень благодарен если хоть направите правильно или какой нибудь туториал по подобному управлению скинете.
SakuraDevil
UNец
 
Сообщения: 3
Зарегистрирован: 30 июл 2018, 15:05

Re: Изменение спрайта в зависимости от положения курсора.

Сообщение 1100001001 02 авг 2018, 16:31

Накидал небольшой пример, надеюсь я тебя правильно понял.
_https://vk.ru/belovedtoy
Аватара пользователя
1100001001
UNITрон
 
Сообщения: 276
Зарегистрирован: 26 сен 2012, 05:34
  • Сайт

Re: Изменение спрайта в зависимости от положения курсора.

Сообщение SakuraDevil 03 авг 2018, 11:00

1100001001 писал(а):Накидал небольшой пример, надеюсь я тебя правильно понял.
Огромное спасибо что заморочились и сделали целый проект, но к сожаленю я в нем не разобрался... У меня у самого получилось НО проблема встала с включением анимации. То есть я создавал 2д сценку, в ней есть спрайт и анимации в разные направление, так же делал blend tree дабы не делать целые лабиринты ну и вот такой вот код. В том же бленд трее, я соединил АЙДЛ и ВОЛК деревья, сделал бул параметр чтобы если отпускаешь кнопки, значение становилось false и герой останавливался и включалась анимация АЙДЛ, соответственно если жмешь кнопки, nо айдл должна была всего лишь замениться на волк. Как бы я не пытался добавить переход в этот код, ничего не работало. То есть герой вертится за мышкой, меняется все как надо но когда начинаешь идти то как была айдл анимация так и остается. Можете пожалуйста помочь добавить переход? Либо может вообще как то по другому добавить изменение спрайтов.

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

public class AimAtMouse : MonoBehaviour
{
    public Transform myTrasnform;
    Animator anim;
    public float movingSpeed;

    private void Start()
    {
        anim = GetComponent<Animator>();
    }


    void Update()
    {
        Aiming();
    }



    public Transform Aiming()
    {
        // convert mouse position to world position
        Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

        // get the difference vector between mouse position and character position
        Vector3 diff = mousePos - myTrasnform.position;

        // calculate the angle between them
        float angleBetween = Mathf.Atan2(diff.y, diff.x) * Mathf.Rad2Deg;
        // add 22.5 degrees to the angle just to make it easier to calculate which frame should be shown
        angleBetween += 22.5f;

        // limit the degree between 0-360
        angleBetween %= 360;
        if (angleBetween < 0)
            angleBetween += 360;

        // find the frame and show it
        int frameIndex = (int)angleBetween / 45;
        anim.SetFloat("x", frameIndex);
        return transform;

    }

}
SakuraDevil
UNец
 
Сообщения: 3
Зарегистрирован: 30 июл 2018, 15:05

Re: Изменение спрайта в зависимости от положения курсора.

Сообщение 1100001001 03 авг 2018, 12:28

Запакуй, скинь проект на Dropmefiles.com и ссылку в личку или сюда. Я посмотрю (ну соответственно удали все лишнее мне ваш проект не нужен, правда)
_https://vk.ru/belovedtoy
Аватара пользователя
1100001001
UNITрон
 
Сообщения: 276
Зарегистрирован: 26 сен 2012, 05:34
  • Сайт

Re: Изменение спрайта в зависимости от положения курсора.

Сообщение 1100001001 03 авг 2018, 13:57

Посмотрел. Добавь в метод Move()
Синтаксис:
Используется csharp
if (Input.GetAxis("Horizontal") != 0 || Input.GetAxis("Vertical") != 0)
        anim.SetBool("Movement", true); else anim.SetBool("Movement", false);

И будет тебе счастье
_https://vk.ru/belovedtoy
Аватара пользователя
1100001001
UNITрон
 
Сообщения: 276
Зарегистрирован: 26 сен 2012, 05:34
  • Сайт

Re: Изменение спрайта в зависимости от положения курсора.

Сообщение SakuraDevil 03 авг 2018, 14:18

1100001001 писал(а):Посмотрел. Добавь в метод Move()
Синтаксис:
Используется csharp
if (Input.GetAxis("Horizontal") != 0 || Input.GetAxis("Vertical") != 0)
        anim.SetBool("Movement", true); else anim.SetBool("Movement", false);

И будет тебе счастье



Во, всего то не хватало 2х строчек. Я там такие конструкции строил и ничего не работало... Спасибо огромное!!! Все бы так помогали :3
SakuraDevil
UNец
 
Сообщения: 3
Зарегистрирован: 30 июл 2018, 15:05

Re: Изменение спрайта в зависимости от положения курсора.

Сообщение LyaNolya 22 июл 2019, 15:00

SakuraDevil писал(а):Доброго времени суток! Очень хочется сделать управление персонажем как в Enter the gungeon, но как это сделать ума дать не могу. Есть 8 спрайтов (с разными направлениями) и нужно чтобы за мышкой персонаж как бы крутился. Просто передвижение в 8 направлений используя W A S D и Blend Tree сделать получалось но это не то. Персонаж должен вертеться за курсором и менять спрайты. Так же получалось просто не анимированный спрайт крутить и то в 4 направления используя массивы, но как именно с анимациями туда вставить не знаю. В интернете рылся и все что удавалось найти, это просто вращение спрайта и его отражение (влево и вправо) в зависимости от расположения курсора и это тоже не походит.Буду очень благодарен если хоть направите правильно или какой нибудь туториал по подобному управлению скинете.

Скинь пожалуйста скрипт ходьбы Move
LyaNolya
UNец
 
Сообщения: 8
Зарегистрирован: 18 июл 2019, 15:28


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

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

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