Как заставить персонажа ходить наискосок?

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

Как заставить персонажа ходить наискосок?

Сообщение Frosmen 01 сен 2021, 22:46

Недавно сделал персонажа, который по идее должен ходить во все стороны. Но он нормально ходит только влево, вправо, вверх и вниз. А если идти наискосок, то у него не будет анимации. Я пытался это сделать, но становилось ещё хуже. Как мне это сделать?

Вот код:

Скрытый текст:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PLayer : MonoBehaviour
{
public GameObject player;
public GameObject Back;
public GameObject Face;
public GameObject Left;
public GameObject Right;
public float moveSpeed = 3f; // moveSpeed float count

void Update()
{
if (Input.GetKey(KeyCode.W))
{
player.transform.Translate(Vector3.up * moveSpeed * Time.deltaTime); // move up
Face.GetComponent<Animator>().SetBool("IsFaceRunning", false);
Back.GetComponent<Animator>().SetBool("IsBackRunning", true);
Left.GetComponent<Animator>().SetBool("IsLeftRunning", false);
Right.GetComponent<Animator>().SetBool("IsRightRunning", false);
Back.SetActive(true);
Face.SetActive(false);
Left.SetActive(false);
Right.SetActive(false);
}
if (Input.GetKeyUp(KeyCode.W))
{
Face.GetComponent<Animator>().SetBool("IsFaceRunning", false);
Back.GetComponent<Animator>().SetBool("IsBackRunning", false);
Left.GetComponent<Animator>().SetBool("IsLeftRunning", false);
Right.GetComponent<Animator>().SetBool("IsRightRunning", false);
}
if (Input.GetKey(KeyCode.S))
{
player.transform.Translate(Vector3.up * -moveSpeed * Time.deltaTime); // move down
Face.GetComponent<Animator>().SetBool("IsFaceRunning", true);
Back.GetComponent<Animator>().SetBool("IsBackRunning", false);
Left.GetComponent<Animator>().SetBool("IsLeftRunning", false);
Right.GetComponent<Animator>().SetBool("IsRightRunning", false);
Back.SetActive(false);
Face.SetActive(true);
Left.SetActive(false);
Right.SetActive(false);
}
if (Input.GetKeyUp(KeyCode.S))
{
Face.GetComponent<Animator>().SetBool("IsFaceRunning", false);
Back.GetComponent<Animator>().SetBool("IsBackRunning", false);
Left.GetComponent<Animator>().SetBool("IsLeftRunning", false);
Right.GetComponent<Animator>().SetBool("IsRightRunning", false);
}
if (Input.GetKey(KeyCode.D))
{
player.transform.Translate(Vector3.right * moveSpeed * Time.deltaTime); // move right
Face.GetComponent<Animator>().SetBool("IsFaceRunning", false);
Back.GetComponent<Animator>().SetBool("IsBackRunning", false);
Left.GetComponent<Animator>().SetBool("IsLeftRunning", false);
Right.GetComponent<Animator>().SetBool("IsRightRunning", true);
Back.SetActive(false);
Face.SetActive(false);
Left.SetActive(false);
Right.SetActive(true);
}
if (Input.GetKeyUp(KeyCode.D))
{
Face.GetComponent<Animator>().SetBool("IsFaceRunning", false);
Back.GetComponent<Animator>().SetBool("IsBackRunning", false);
Left.GetComponent<Animator>().SetBool("IsLeftRunning", false);
Right.GetComponent<Animator>().SetBool("IsRightRunning", false);
}
if (Input.GetKey(KeyCode.A))
{
player.transform.Translate(Vector3.right * -moveSpeed * Time.deltaTime); // move left
Face.GetComponent<Animator>().SetBool("IsFaceRunning", false);
Back.GetComponent<Animator>().SetBool("IsBackRunning", false);
Left.GetComponent<Animator>().SetBool("IsLeftRunning", true);
Right.GetComponent<Animator>().SetBool("IsRightRunning", false);
Back.SetActive(false);
Face.SetActive(false);
Left.SetActive(true);
Right.SetActive(false);
}
if (Input.GetKeyUp(KeyCode.A))
{
Face.GetComponent<Animator>().SetBool("IsFaceRunning", false);
Back.GetComponent<Animator>().SetBool("IsBackRunning", false);
Left.GetComponent<Animator>().SetBool("IsLeftRunning", false);
Right.GetComponent<Animator>().SetBool("IsRightRunning", false);
}
}
}
Frosmen
UNец
 
Сообщения: 20
Зарегистрирован: 16 авг 2021, 20:48

Re: Как заставить персонажа ходить наискосок?

Сообщение NICO 03 сен 2021, 02:28

Не совсем понятно, чего вы хотите. Насколько я понял, все проблемы в том, что нет анимации с движением наискось, верно? Ежели в этом дело, то вам вряд ли здесь поможет кто-то. Либо найдите готовые спрайты с персонажем, который бы ходил и наискось, либо, ежели не очень тяжело, вы можете сами нарисовать несколько спрайтов, подправив те, что есть, таким образом, чтобы можно было методом наложения создать эффект видимости его передвижения наискось. В самом Юнити есть Анмиация, в которой, собственно, и можно все это сделать через готовые спрайты (картинки). Останется только все грамотно проделать через аниматор в итоге, и все, готово. Или я не совсем понял ваш вопрос, и вы что-то иное хотели спросить? Просто ежели дело в том, что мне показалось, то вряд ли кто-то вам поможет здесь, повторюсь. Вы же не считаете, что кто-то все бросит и сделает вам готовые спрайты? Опять же, как вариант - можно найти готовый набор, в котором были бы и такие передвижения, но ежели вы располагаете персонажем, который вам необходим в игре любой ценой, то придется поработать в графическом редакторе и с Анимацией в Юнити.
NICO
UNIт
 
Сообщения: 123
Зарегистрирован: 30 июл 2021, 23:30


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

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

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