[Unity2D]实现人物动画帧的导入以及左右移动

学习目标:

实现人物动画帧的导入以及左右移动,了解了动画帧和Animation系统的关系


学习参考:

参考视频:秦无邪OvO的个人空间_哔哩哔哩_Bilibili

绘制像素工具:[资源]Aseprite 1.2.8【aseprite吧】_百度贴吧


学习内容:

首先我们要画好一个人物应该有的动画,这里我是按着空洞骑士来画的,目前画了战力移动,普通攻击,跳跃,二段跳,掉落,回血,冲刺,黑暗冲刺,剑技。后续还会接着画的,然后我们在File->Export Spirit Sheet中选择Best fit for texture,再勾上Output File选择文件名和格式即可。

这里我用的像素点画布是64*32,

导入Unity后,接下来就是先切割这张Sheet

然后我们把第一张图拖进来,接着就是做动画

动画就直接根据你在Aseprite做时贴的Tag,比如Walk的Tag,那就把3,4,5张一起拖入给Player的对象

像我这样分别给每个动画命名

然后可以在Animation面板里测试一下你的动画对了没(以ATTACK为例)


 接下来实现一下人物的左右移动,给Player游戏对象创建一个C#脚本“PlayerController”

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

public class PlayerController : MonoBehaviour
{
    public float walkSpeed;
   

    private Animator myAnim;
    private BoxCollider2D boxcollid2D;
    private Rigidbody2D rb2D;

    private bool isFlip = false;
    void Start()
    {
        myAnim = GetComponent<Animator>();
        boxcollid2D = GetComponent<BoxCollider2D>();
        rb2D = GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        Walk();
    }

    void Walk()
    {
        float moveDir = Input.GetAxis("Horizontal");
        Vector2 playerVel = new Vector2(moveDir * walkSpeed, rb2D.velocity.y);
        rb2D.velocity = playerVel;
    }
}

 接着我们还要为Player添加几个组件,Righbody2D,锁Z轴持续检测改一下

BoxCollider2D(检测地面接触),

以及

 然后再创建一个地面,给它的Layer设置为Ground(自己创建一个)

 

 然后他就可以左右移动了 

学习产出:

根据动画帧来做动画,代码中用Input.GetAxis来获取横轴的方向,同时游戏对象绑定的组件也要注意改参数测试

猜你喜欢

转载自blog.csdn.net/dangoxiba/article/details/122681640
今日推荐