В ходе разработке, появилось желание сделать анимацию персонажа, такую же как в игре Enter The Gungeon. То есть герой имеет 8 спрайтов (в 8 направлений) и анимации (хотьбы + стойки) и меняется это в зависимости от положения курсора, в моём же случаи джостика под androidю Я сделал что-то похожие, НО только когда я нажимаю клавиши. Буду благодарен если подскажите как можно добавить в данный код (или изменить его совсем) добавить мышь. Чтобы при нажатии клавиш происходило только перемещение по миру, а анимация и спрайты менялись в зависимости от положения курсора. Будет приятно если поможете оптимизируйте под android.
Знания в C# малы, а идею реализовать хочется. Буду благодарен! (На гифке показан пример)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement : MonoBehaviour
{
public float moveSpeed = 3f;
Animator thisAnim;
float lastx, lasty;
void Start()
{
thisAnim = GetComponent<Animator>();
}
void Update()
{
Move();
}
void Move()
{
Vector3 rightMovement = Vector3.right * moveSpeed * Time.deltaTime * Input.GetAxis("Horizontal");
Vector3 upMovement = Vector3.up * moveSpeed * Time.deltaTime * Input.GetAxis("Vertical");
Vector3 heading = Vector3.Normalize(rightMovement + upMovement);
transform.position += rightMovement;
transform.position += upMovement;
UpdateAnimation(heading);
}
void UpdateAnimation(Vector3 dir)
{
if (dir.x == 0f && dir.y == 0f)
{
thisAnim.SetFloat("LastDirX", lastx);
thisAnim.SetFloat("LastDirY", lasty);
thisAnim.SetBool("Movement", false);
}
else
{
lastx = dir.x;
lasty = dir.y;
thisAnim.SetBool("Movement", true);
}
thisAnim.SetFloat("DirX", dir.x);
thisAnim.SetFloat("DirY", dir.y);
}
}