【问题标题】:Why are my animations backwards in Unity?为什么我的动画在 Unity 中是倒退的?
【发布时间】:2018-12-31 06:25:03
【问题描述】:

好的,这里有一个视频,显示的问题很容易解释 https://youtu.be/7701UK0ijy4

我的问题纯粹是当我切换到左运行动画时,它仍然播放右运行动画

在您阅读此列表之前,请先知道,如果它有任何影响,则没有。 到目前为止,我已经尝试将 Main_Run_Left 的 Speed 设置为 -1。 我已经检查了镜子框。 我已删除所有动画并重置它们。

编辑:我用不同的怪物动画切换了 Running_Left 动画,它有点工作?就像它正在播放 running_Left 和其他怪物动画一样?就像我简单地说的那样,它在向左移动时又回到了向右运行。

public Animator anim;


// Update is called once per frame
void Update()
{
    horizontalMove = Input.GetAxisRaw("Horizontal") * runSpeed;

    if (horizontalMove > .001)
    {
        anim.SetBool("Running Right", true);
        anim.SetBool("Running Left", false);
        anim.SetBool("Chillin", false);
    }
    else if (horizontalMove < -.001)
    {
        anim.SetBool("Running Left", true);
        anim.SetBool("Running Right", false);
        anim.SetBool("Chillin", false);
    }
    else
    {
        anim.SetBool("Chillin", true);
        anim.SetBool("Running Left", false);
        anim.SetBool("Running Right", false);

    }

【问题讨论】:

    标签: c# unity3d animator


    【解决方案1】:

    你在做什么有点奇怪。您有一个向右行走的动画和一个向左行走的动画,即使它们是彼此的镜像翻转。如何删除左行走动画并将另一个重命名为“行走”?然后删除动画师中的所有布尔值,并用一个名为“Moving”的布尔值替换它们。从寒冷过渡到步行的条件是“移动”布尔是否为真,反之亦然。然后在代码中,当它的水平小于零时翻转精灵。我在下面发布了一个脚本,显示了我在说什么。

    using UnityEngine;
    
    public class Player : MonoBehaviour
    {
    [SerializeField]
    private float _speed;
    
    private Rigidbody2D _rb;
    private Animator _anim;
    private SpriteRenderer _sprite;
    
    void Start()
    {
        _rb = GetComponent<Rigidbody2D>();
        _anim = GetComponent<Animator>();
        _sprite = GetComponent<SpriteRenderer>();
    }
    
    void FixedUpdate()
    {
        Move();
    }
    
    private void Move()
    {
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");
        Vector2 movement = new Vector2(horizontal, vertical);
        _rb.velocity = movement * _speed;
    
        _anim.SetBool("Moving", horizontal != 0);
    
        if (horizontal != 0)
            Flip(horizontal > 0);
    
    }
    
    private void Flip(bool facingRight)
    {
        _sprite.flipX = !facingRight;
    }
    
    }
    

    【讨论】:

    • 老实说,直到今天我什至都不知道这是可能的(边走边学)非常感谢您的洞察力!
    • 不客气。如果您正在制作平台游戏,我强烈建议您遵循教程,因为从这里开始只会变得更难。并不是说您无法管理,但您需要某种指南来引导您完成。 Inscope Studios 在 YouTube 上有一个。我强烈推荐他的视频来完成你想做的工作。
    猜你喜欢
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 2018-08-14
    • 1970-01-01
    相关资源
    最近更新 更多