Персонаж не двигается в UnityC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Персонаж не двигается в Unity

Сообщение Anonymous »

Я написал код в Unity, надеясь, что персонаж сможет двигаться во всех направлениях в двух измерениях, если я нажму клавишу направления. (Если я нажимаю клавишу Shift, он движется быстро.) Однако после написания кода, связанного с анимацией, персонаж получает ошибку, которая не двигается, даже если я нажимаю клавишу направления. Надеюсь, вы подскажете мне решение или решение для тех, у кого аналогичная проблема.

Код: Выделить всё

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerManager : MonoBehaviour
{
public float speed;

protected Vector3 vector;

public float runSpeed;
private float applyRunSpeed;

private Animator anim;

private void Start()
{
anim = GetComponent();

}

IEnumerator MoveCoroutine()
{

while (Input.GetAxisRaw("Horizontal") != 0 || Input.GetAxisRaw("Vertical") != 0)
{
if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
{
applyRunSpeed = runSpeed;
}
else
{
applyRunSpeed = 0;
}

vector.Set(Input.GetAxisRaw("Horizontal"),
Input.GetAxisRaw("Vertical"), transform.position.z);

anim.SetFloat("DirX", vector.x);
anim.SetFloat("DirY", vector.y);
anim.SetBool("Idle", false);

if (vector.x != 0 || vector.y != 0)
{
transform.Translate(vector.x * (speed + applyRunSpeed) * Time.deltaTime,
vector.y * (speed + applyRunSpeed) * Time.deltaTime, 0);
}
yield return null;
}
anim.SetBool("Idle", true);

}
private void Update()
{
if (Input.GetAxisRaw("Horizontal") != 0 || Input.GetAxisRaw("Vertical") != 0)
{
StartCoroutine(MoveCoroutine());
}
}
}
Я слышал в чате GPT, что этот код выполняет много ненужных операций из-за корутины, и я слышал, что не существует кода, который фактически перемещал бы спрайт.
/>Но все работало хорошо, пока я не написал код, связанный с анимацией (SetFloat, SetBool), поэтому я подозреваю, что проблема возникла в части, связанной с анимацией.
Или кажется, что компьютер не мог справиться с этим, потому что объем вычислений в части, связанной с сопрограммами, был большим.
Я не удовлетворен ни одним из них.

Подробнее здесь: https://stackoverflow.com/questions/787 ... e-in-unity
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Мой персонаж не двигается после включения взаимодействия с удержанием.
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Мой персонаж не двигается после включения взаимодействия с удержанием.
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • JLabel не двигается
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Игрок LibGDX не двигается
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Патфайндер не двигается?
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»