c# - 攻击动画持续 1 帧
问题描述
您好,我正在 Unity 中制作 2D 自上而下的学生游戏。我被困在动画部分,我的攻击动画持续 1 帧,然后直接回到空闲状态。在 Visual Studio 中使用 C#:
void Update () {
Move ();
float lastInputX = CrossPlatformInputManager.GetAxis("Horizontal");
float lastInputY = CrossPlatformInputManager.GetAxis("Vertical");
if (lastInputX != 0 || lastInputY != 0)
{
anim.SetBool("Walking", true);
anim.SetFloat("LastMoveX", lastInputX);
anim.SetFloat("LastMoveY", lastInputY);
anim.Play("Walk");
}
else if (CrossPlatformInputManager.GetButtonDown("Fire1"))
{
anim.SetBool("Attacking", true);
//StartCoroutine(Attack());
anim.Play("Attack");
}
else
{
anim.SetBool("Attacking", false);
anim.SetBool("Walking", false);
anim.Play("Idle");
}
float inputX = CrossPlatformInputManager.GetAxis("Horizontal");
float inputY = CrossPlatformInputManager.GetAxis("Vertical");
anim.SetFloat("SpeedX", inputX);
anim.SetFloat("SpeedY", inputY);
}
解决方案
我对此不确定,但如果 CrossPlatformInputManager.GetButtonDown() 的行为与 Input.GetButtonDown() 相同,它将在用户按下的帧期间返回 true,但在用户释放之前不会返回 true键并再次按下。
这意味着在用户按下按钮的第一帧上,它将触发 Attack 动画,但下一帧将返回 false 并触发 Idle 动画。
另外,我不确定为什么要在每个动画上调用 anim.Play(),Animator 参数的目的是在存在给定值时触发动画。
推荐阅读
- javascript - 运行 magento 时遇到问题
- node.js - 使用 nodejs 代理的套接字挂断以将前端与后端服务通信
- xcode - 使用 InfoPlist 本地化更改了 iOS 应用程序名称
- javascript - CSS 变量根伪类范围和通过 javascript 更改值
- c# - Xaml,按钮的单击事件在命令之前运行?
- android - App.Fragment 和 V4.support.fragment 中的地图
- monogame - 从经纬度到笛卡尔坐标的转换结果与实际位置不同
- scala - 哪些依赖项要添加到 Apache Spark 的 scala 项目?
- python - Tensorflow:如何使用持久会话评估测试数据?
- git - 合并分支,长期未合并