unity 2d 画画 动画 unity怎么做2d动画
转载
- 人物动画:序列帧动画(多图),整体图用之前需要切割,并保证每个精灵的打开Animation后,拖入对映动画的几张图片,自动生成帧动画,需要操作动画的角色需要添加Animator组件,除UI以外的精灵需要注意,Pixels Per Unit需要设置为同样大小。角色的朝向可以通过总之Scale的X来控制或者通过Sprite Renderer的Flip的X来控制。
- 动画控制:Animator,理清每个动画之间相互切换的关系和条件,设置对应的参数。值得注意的一点,因为是2D动画,所以可以把动画的切换关闭,将Has Exit Time关闭,Transition Duratin设置为0。有时动画需要播放完成后执行一些函数可以在需要播放的动画中添加一个事件,事件将在设置事件的地方执行,事件需要指定一个函数,函数需要为public修饰。
- 蹲下穿越障碍:一般是通过设置两个碰撞体,上下各一个,蹲下时,关闭上方的碰撞体
- 跳跃动画:为了防止无线跳跃,可以在角色脚下放一个空物体,通过Physics2D来检测
private bool isGround;
public Transform groundJump;//外部设置的那个空物体
public LayerMask ground;//外部传入
isGround = Physics2D.OverlapCircle(groundJump.position, 0.2f, ground);//可以获得一个布尔值来判断是否在地面上
- 行走动画:代码上通过Input来书写,通过刚体自带属性velocity来施加移动,如果想要通过虚拟按键,,下附组件包Joystick Pack,对应文件中有Prefabs,将Variable Joystick拖入到Canvas下就可以使用了,其他的可以试试。
public Joystick joy;
public class Player: MonoBehaviour
{
void PlayerMove()
{
//角色移动
movePos = joy.Horizontal;
playerAni.SetFloat("running", Mathf.Abs(movePos));
if (movePos != 0)
{
playerRb.velocity = new Vector2(movePos * moveSpeed * Time.fixedDeltaTime,
playerRb.velocity.y);
}
if (movePos < 0)
{
playerTrans.localScale = new Vector3(-1, 1, 1);
}
else if (movePos > 0)
{
playerTrans.localScale = new Vector3(1, 1, 1);
}
}
}
- 地形:需要先创建Tilemap游戏物体,地形所需图一般需要切割好后拖入Tile Palette面板中,可创建多个TilePalette,用于不同的作用,举例,有些是地板或者一些需要有碰撞,另一些可以是背景之类的,如果需要有碰撞,可以添加特有的碰撞体Tilemap Collider 2D。这里提到一个组件,Platform Effector 2D,可实现从下跳跃到上方,并在上方站立。(并不完美,后续可以自己写脚本来实现下跳。)
- 循环移动的怪物:可以设置两个子节点用于判断巡逻的路径,将其位置存储后删除。
- 近战攻击判断:待写
- 远程攻击判断:待写
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。