2D 动画卡在跳跃动画上

问题描述 投票:0回答:2

我正在观看一个关于如何制作 2D 动画的旧 brackeys 视频,我确信我已经正确遵循了教程中的所有内容。一切都很顺利,直到我开始跳跃动画。跳跃动画在着陆功能期间不会停止。视频在这里 https://www.youtube.com/watch?v=hkaysu1Z-N8&feature=emb_logo 我的代码是这样的:

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

public class PlayerMovement : MonoBehaviour
{
public CharacterController2D controller;
public float runSpeed = 80f;
float horiztalMove = 0f;
bool jump = false;
public Animator animator;
// Start is called before the first frame update
// Update is called once per frame
void Update()
{

    horiztalMove = Input.GetAxisRaw("Horizontal") * runSpeed;

    animator.SetFloat("Speed", Mathf.Abs(horiztalMove));

    if (Input.GetButtonDown("Jump"))
        jump = true;
        animator.SetBool("Jumping", true);
}
 public void OnLanding ()
{
    animator.SetBool("Jumping", false);   
}

void FixedUpdate()
{        //move our character
    controller.Move(horiztalMove * Time.fixedDeltaTime, false, jump);
    jump = false;
}

} 如果您希望我发送任何其他代码或屏幕截图,我会的。

c# unity-game-engine animation 2d
2个回答
0
投票

在此行中,您尚未添加 "{}"

if (Input.GetButtonDown("Jump"))
        jump = true;
        animator.SetBool("Jumping", true);

改为这样写:

if (Input.GetButtonDown("Jump")
   {
       jump = true;
       animator.SetBool("Jumping", true);
   }

我看过你用过的 Brackeys 视频...... 我的问题是,您是否将 PlayerMovement 脚本添加到 CharacterControllerOn Land Event 并选择了您在 PlayerMovement 脚本中创建的 OnLanding() 函数?

尝试检查您是否已添加 OnLanding() 并修复我指出的行中的 {}。 希望我对你有帮助。 <3


0
投票

如果您的 2D 动画卡在跳跃动画上并且未按预期过渡,则可能有多种原因导致此问题。以下是排除和解决问题的一些常见步骤:

检查动画事件:确保在跳跃动画剪辑中没有设置任何可能阻止转换到另一个动画状态的动画事件或触发器。这些事件可能旨在保持动画循环或控制过渡。

动画控制器:如果您使用的是 Unity 或类似的游戏开发框架,请检查您的动画控制器。确保正确设置从跳跃动画状态到其他状态的转换条件。如果不满足任何条件,可能会阻止过渡。

混合树:如果您在动画控制器中使用混合树,请确保控制混合树的参数设置正确。不正确的参数值会导致动画卡住。

动画层:验证您没有任何可能覆盖或阻止过渡到其他动画的动画层。如有必要,调整图层权重。

脚本:如果您通过脚本控制动画,请检查脚本代码以确保它正确触发动画转换。确保您设置适当的动画器参数或在需要时触发动画过渡。

动画事件:仔细检查跳跃动画中是否存在任何可能导致意外行为的动画事件。这些事件可能正在调用函数或更改影响动画状态的参数。

动画时间轴:如果您使用基于时间轴的动画系统,请确保时间轴配置正确,并且没有意外的键或剪辑导致问题。

动画资源: 检查实际的动画资源(例如 .anim 文件),看看是否存在任何可能导致动画循环或卡住的异常或意外关键帧。

调试:使用调试工具或日志来跟踪动画控制器的状态以及运行时动画参数的值。这可以帮助查明问题发生的位置。

重新导入资产:有时,重新导入动画资产或重置动画控制器可以解决由损坏或过时的数据引起的问题。

通过系统地检查这些因素,您应该能够识别并解决 2D 跳跃动画卡住的问题。如果问题仍然存在,请考虑提供有关您的设置或代码的更具体的详细信息,以获得更有针对性的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.