学习目标:
实现人物动画帧的导入以及左右移动,了解了动画帧和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来获取横轴的方向,同时游戏对象绑定的组件也要注意改参数测试