-
2D像素人物可以通过抬左脚和抬右脚以及原画三种照片完成动画效果
-
把这三种图片水平翻转后,你就得到了所有需要的素材
-
最简单的正常动画逻辑需要4个动画,左idle,右idle,左walk和右walk。
-
idle直接让4张相同的原画就行
-
walk则是左脚右脚左脚右脚左脚右脚,重复是为了看起来流畅点(1秒6个关键帧)
-
状态机的转换需要想一下
-
我们设置了2个参数,speed和lookLeft,表示速度和朝向。
- idle到walk:检测到speed>0.5触发,根据朝向判断哪个walk
- 为了判断条件简单点,walk只设置到不同方向的walk和同向的idle,不设置不同方向的idle。
- 同理左idle也不需要到右idle。
- 此时逻辑正确了,但是你会发现转化很卡顿,因为需要把两个状态机之间的transition时间设置为0,以及has exit time去掉。
- 通过脚本设置朝向和速度(通过移动向量的长度设置)
void Update()
{
// 移动相关
float moveX = Input.GetAxisRaw("Horizontal");
float moveY = Input.GetAxisRaw("Vertical");
Vector2 moveDirection = new Vector2(moveX, moveY);
Vector2 p = body.position;
p += moveDirection * speed * Time.deltaTime;
body.MovePosition(p);
// 动画
if (moveDirection.x != 0)
{
if (moveDirection.x == 1) lookLeft = false;
else lookLeft = true;
}
anim.SetBool("lookLeft", lookLeft);
anim.SetFloat("speed", moveDirection.magnitude);// 向量长度
}