c# - 为什么动画不适用于此 2D 统一角色控制器脚本
问题描述
我有一些代码可以让玩家上下左右移动。
public class playerMovement : MonoBehaviour
{
public float moveSpeed = 5f;
public Rigidbody2D rb;
public Animator animator;
public SpriteRenderer sr;
Vector2 movement;
bool walking = false;
private void Update()
{
//Inputs
movement.x = Input.GetAxisRaw("Horizontal");
movement.y = Input.GetAxisRaw("Vertical");
if (Input.GetKey("left") || Input.GetKey("right") || Input.GetKey("up") || Input.GetKey("down")
{
walking = true;
}
else
{
walking = false;
}
Animate();
}
private void Animate()
{
if (Input.GetKey("down") && walking == false)
{
sr.flipX = false;
animator.Play("idle_front");
}
else if (Input.GetKey("down") && walking)
{
sr.flipX = false;
animator.Play("walk_front");
}
else if (Input.GetKey("up") && walking == false)
{
sr.flipX = false;
animator.Play("idle_back");
}
else if (Input.GetKey("down") && walking)
{
sr.flipX = false;
animator.Play("walk_back");
}
else if (Input.GetKey("left") && walking == false)
{
sr.flipX = false;
animator.Play("idle_side");
}
else if (Input.GetKey("down") && walking)
{
sr.flipX = false;
animator.Play("walk_side");
}
else if (Input.GetKey("right") && walking == false)
{
sr.flipX = true;
animator.Play("idle_side");
}
else if (Input.GetKey("right") && walking)
{
sr.flipX = true;
animator.Play("walk_side");
}
}
public void FixedUpdate()
{
//Movement
rb.MovePosition(rb.position + movement * moveSpeed * Time.fixedDeltaTime);
}
}
动作运行良好,但角色只是停留在空闲状态。我曾尝试将 get 键切换Input.GetKey("left") || Input.GetKey("right") || Input.GetKey("up") || Input.GetKey("down")
为Input.GetKeyDown()
and Input.GetKeyUp()
,但这些都不起作用。
我也尝试过使用混合树,但我不知道该怎么做。
我对 Unity 还很陌生,所以一个简单的答案会很棒。
解决方案
打开动画窗口
创建“状态”
将动画剪辑设置为“运动”
在左上角单击“参数”选项卡
点击参数旁边的加号
点击“触发器”
命名你的触发器
右键单击“任何状态”并转换以将一条线拖动到您创建的新“状态”
单击“任何州”和您创建的“州”之间的线
在“条件”下按加号并添加您刚刚创建的触发器
在代码中写
animator.SetTrigger("triggername");
当您想为所有动画转换到前面提到的动画状态重复时,请从“任何状态”链接它们
推荐阅读
- math - 获取旋转矩形的边界
- excel - 用于组合相似行但对 1 列中的值求和的公式
- c# - 编写一个私有属性,它是自己的类对象的列表
- arduino-uno - Arduino 绘图错误“命令无法识别”m18 (GRBL + G-CODE)
- c# - LINQ 查找第一个可用的编号后缀字符串
- php - 使用 SQL 和 PHP 编辑实体中的多条记录
- wpf - 隐藏 WPF 中的列后清除 DataGridTemplateColumn 中的组合框
- python - 调整 CIFAR-10 数据集大小时出现内存错误
- java - java.util.concurrent.ExecutionException:java.lang.RuntimeException:没有服务器来服务请求。检查日志以获取详细信息。
- python - 列表未完全卸载到记事本中?