Анимация прерывается, но я хочу, чтобы анимация завершиласьC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Анимация прерывается, но я хочу, чтобы анимация завершилась

Сообщение Anonymous »

Я новичок в программировании, экспериментировал с Unity и столкнулся с проблемой.

Моя проблема в том, что если я перемещаю проигрыватель и активируйте функцию SkillAttack1, анимация прекратится и не завершится. Прямо сейчас, как вы видите в коде нижеif I activate theSkillAttack1`, это работает, но анимация все равно не завершается. Также, если я нажимаю кнопку «w», например, на 15 секунд, игрок застревает и движется вперед. Единственный способ воспроизвести полную анимацию — не двигаться, но это неправильно.

[Animator1][1]
[Animator2][2]
[Animator3][3]

[1]: https://i.sstatic.net/BeziY.png
[2]: https://i.sstatic.net/310vz.png
[3]: https://i.sstatic.net/tOVVu.png

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

public class PlayerMovement : MonoBehaviour
{

public float velocity = 5;
public float turnSpeed = 10;
Vector2 input;
float angle;
Quaternion targetRotation;
public Transform cam;
public Animator anim;
public bool IsAttacking = false;

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

void Update()
{
if(Mathf.Abs(input.x) < 0.5 && Mathf.Abs(input.y) < 0.5) return;
CalculateDirection();
Rotate();
Move();
}

void FixedUpdate()
{
if(IsAttacking == false)
{
GetInput();
}
SkillAttack1();
SkillAttack2();
}

/// Input based on Horizontal(a,d) and Vertical (w,s) keys
void GetInput()
{
input.x = Input.GetAxis("Horizontal");
input.y = Input.GetAxis("Vertical");
anim.SetFloat("VelX", input.x);
anim.SetFloat("VelY", input.y);
}

/// Direction relative to the camera rotation
void CalculateDirection()
{
angle = Mathf.Atan2(input.x, input.y);
angle = Mathf.Rad2Deg * angle;
angle += cam.eulerAngles.y;
}

/// Rotate toward the calculated angle
void Rotate()
{
targetRotation = Quaternion.Euler(0, angle, 0);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, turnSpeed
* Time.deltaTime);
}

/// This player only move along its own forward axis
void Move()
{
transform.position += transform.forward * velocity * Time.deltaTime;
}

public void SkillAttack1(){
if(Input.GetKeyDown("1"))
{
IsAttacking = true;
StartCoroutine(OnSkillAttack1());
}
}

public void SkillAttack2()
{
if(Input.GetKeyDown("2"))
{
anim.SetTrigger("SkillAttack2");
}
}

public IEnumerator OnSkillAttack1()
{
anim.SetTrigger("SkillAttack1");
yield return null;

yield return new WaitForSeconds(15.0f);
IsAttacking = false;
}
}


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Добавить значок ссылки, который прерывается последним словом?
    Гость » » в форуме CSS
    0 Ответы
    33 Просмотры
    Последнее сообщение Гость
  • Скрипт прерывается после завершения тестов Бруно
    Anonymous » » в форуме Linux
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Asio TCP-клиент прерывается при асинхронности
    Гость » » в форуме C++
    0 Ответы
    17 Просмотры
    Последнее сообщение Гость
  • CSS-сетка с подсеткой и переполнением прерывается в Safari, но работает во всех других браузерах
    Anonymous » » в форуме CSS
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Запустите функцию очистки в Python, когда задание Дженкинса прерывается
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

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