Unity入门学习——游戏对象创建与动画设置

一、游戏对象创建

直接创建

  • 直接拖动游戏素材到 Scene 窗口中

通过创建2D Object创建

  1. 在 Hierarchy 视窗下右键选择 2D Object,再选择 Sprites,根据游戏对象图形选择 Square、Circle 或者其他图形
  2. 将游戏素材拖动到 Inspector 视窗下的 Sprite Renderer 的 Sprite 中,此时游戏对象会呈现游戏素材的样式(要提前设置图片尺寸,一般将 Pixeis Per Unit 设置为16为合适)

图1
图2

碰撞体的设置

  • 点击游戏物体后在Inspector窗口下点击 Add Component,分别添加 Rigidbody 2D 以及合适的碰撞体(碰撞体有方形碰撞体 Box Collider 2D、圆形碰撞体 Circle Collider 2D、自定义碰撞体 Capule Collider 2D,要根据需求选择)

二、动画的设置

创建动画器与动画

  • 在资源目录下右键 Creat -> Animation ,将 Animation 命名
  • 将 Animation 拖到要创建动画的物体上面,此时目录下会出现一个 Animator Controller

Animator和Animation窗口的使用

  1. 点击 Window -> Animation -> Animation / Animator

在这里插入图片描述

  1. 设置采样率:点击 Animation 窗口的右上角,点击再勾选 Show Sample Rate

在这里插入图片描述

  1. 点击要创建动画的物体,将创建好的 Animation 拖动到 Animator 窗口中

在这里插入图片描述

  1. 重复播放:点击目录下创建的 Animation ,在 Inspect 勾选 Loop Time

在这里插入图片描述

动画切换

  1. 在 Animator 窗口的左上角点击 Parameters , 点击 + 号选择合适类型创建

在这里插入图片描述

  1. 点击 Animator 中动画之间的连接箭头,去掉 Has Exit Time 的勾,再点击 Setting ,将 Transition Duration 设置为0(动画切换更快)

在这里插入图片描述
4. 点击 Animator 中动画之间的连接箭头,在 Inspector -> Conditions -> 添加已创建的触发器

三、多动画切换(以 Int 类型为例)

  1. 在 Animator 窗口的左上角点击 Parameters , 点击+号选择 Int 类型,创建state
  2. 点击 Animator 中动画之间的连接箭头,在 Inspector -> Conditions -> 添加 state ,选择 Equals ,再选择要切换的动画
  3. 创建C Sharp脚本控制
Class AnimController
{
    
    
	private float dirX = 0f;
	private Animator anim;
	private SpriteRenderer sprite;
	private enum MovementState {
    
     idle, running, jumping, falling }
	
	void Start()
	{
    
    
		anim = GetComponent<Animator>();
	}
	
	void Update()
	{
    
    
		UpdateAnimationState();
	}
	
	public void UpdateAnimationState()
	{
    
    
		MovementState state;
		if(diX > 0f)
		{
    
    
			state = MovementState.running;
			sprite.flipx = false;//反转动画的X轴
		}
		else if(dirX < 0f)
		{
    
    
			state = MovementState.running;
			sprite.flipx = true;
		}
		else
		{
    
    
			state = MovementState.idle;
		}
		
		if(rb.velocity.y > .1f)
		{
    
    
			state = MovementState.jumping;
		}
		else if(rb.velocity.y < -.1f)
		{
    
    
			state = MovementState.falling;
		}
		
		anim.SetInterger("state",(int)state);
	}
}


猜你喜欢

转载自blog.csdn.net/weixin_73402838/article/details/131047768