дерганья в Анимации

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

дерганья в Анимации

Сообщение Lolipop 10 фев 2017, 06:44

Здраствуйте! Снова меня волнует тема с анимацией...
есть обьект двгающийся в 4 направления по клеткам, каждый шаг сопровождается анимацией, по окончании которой родительский обьект анимированного обьекта перемещается на 4 единицы в определенную сторону в зависимости от направления.
В аниматоре убрал все плавные переходы, но все равно обьект после того как завершиться анимация перемещается на доли секунды на +8 единиц относительно позиции...
Скрипт C#:
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour {

    float Timer;
    public float WalkCooldown;
    public float EndAnim;
    Animator anim;
    public AnimationClip Up;
    public AnimationClip Left;
    public AnimationClip Down;
    public AnimationClip Right;
    public bool AnimMode;




    void Start () {
        anim = GetComponent<Animator>();
       
        }
       
        void Update () {
       
        if (Input.GetKey(KeyCode.W) && Timer>= WalkCooldown)
        {
            Timer = 0;
            anim.Play("UpWalk");
            Invoke("UpEndAnim", Up.length);
            if (AnimMode)
            {
                Invoke("UpEndAnim", EndAnim);
            }
        }

        if (Input.GetKey(KeyCode.A) && Timer >= WalkCooldown)
        {
            Timer = 0;
            anim.Play("LeftWalk");
            Invoke("LeftEndAnim", Left.length);
            if (AnimMode)
            {
                Invoke("LeftEndAnim", EndAnim);
            }
        }

        if (Input.GetKey(KeyCode.S) && Timer >= WalkCooldown)
        {
            Timer = 0;
            anim.Play("DownWalk");
            Invoke("DownEndAnim", Down.length);
            if (AnimMode)
            {
                Invoke("DownEndAnim", EndAnim);
            }
        }

        if (Input.GetKey(KeyCode.D) && Timer >= WalkCooldown)
        {
            Timer = 0;
            anim.Play("RightWalk");
            Invoke("RightEndAnim", Right.length);
            if (AnimMode)
            {
                Invoke("RightEndAnim", EndAnim);
            }
        }

        Timer += Time.deltaTime;
    }

    void UpEndAnim ()
    {
        anim.Play("Default");
        transform.position = new Vector3(transform.position.x, transform.position.y +4);
    }

    void LeftEndAnim()
    {
        anim.Play("Default");
        transform.position = new Vector3(transform.position.x - 4, transform.position.y);
    }

    void DownEndAnim()
    {
        anim.Play("Default");
        transform.position = new Vector3(transform.position.x, transform.position.y - 4);
    }

    void RightEndAnim()
    {
        anim.Play("Default");
        transform.position = new Vector3(transform.position.x + 4, transform.position.y);
    }
}
 


ЭЩКЕРЕ!
Аватара пользователя
Lolipop
UNIт
 
Сообщения: 141
Зарегистрирован: 05 окт 2016, 14:21

Вернуться в Почемучка

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

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