【截图整理官方教程】unity 2D角色控制器 2D Character Controller

来源:互联网 发布:淘宝直播自我介绍文字 编辑:程序博客网 时间:2024/05/22 08:20

原视频


unity2D角色控制器教程(基于untiy5修改)

1.新建一个空对象Create Empty 命名为Character

添加 Sprite renderer 精灵渲染器

这个截图是我的5.5.2f1版本的


添加 Rigidbody 2D 2D刚体组件


2.精灵序列图

导入后设置


点击Sprite Editor,如果选择Automatic ,点击Slice后,将自动根据透明度切出精灵


这里我们设置想要的大小:选择类型为Grid , 大小为275X275像素,点击Slice


添加两个碰撞器


3.动画状态机

在Assets下右键创建一个动画控制器 Animator controller,命名为RobotController


拖动赋给Character的Animation组件的Controller参数


打开动画编辑器Animation和动画状态机Animator(5.5.2f1的截图)



那个24看自己的精灵帧数调。

给状态机增加参数


(5.5.2f1位置有点不同)


右键增加转换线


试了下怎么删除线,是点击后,在右边的小减号那里删


在右边设置,如图,意思是当speed(前面新建的参数)Greater(大于)0.01时,从待命状态转为跑状态


再同样添加一条转换线当speed less(小于)0.01时,从跑状态转为待命状态


注意,这里如果连接了个没有动画的状态,比如下图的Exit,在右侧就没有上图的Atomic


4.新建脚本


FixedUpdate固定更新、Update更新

当MonoBehaviour启用时,其Update在每一帧被调用。

处理Rigidbody时,需要用FixedUpdate代替Update。例如:给刚体加一个作用力时,你必须应用作用力在FixedUpdate里的固定帧,而不是Update中的帧。(两者帧长不同)可参考这个链接unity3d Update()和FixedUpdate()的区别 。

左右移动代码:

using System.Collections;using System.Collections.Generic;using UnityEngine;public class controller : MonoBehaviour {public float maxSpeed = 10f;bool facingright = true;Animator anim;Rigidbody2D rigi;// Use this for initializationvoid Start () {anim = GetComponent<Animator> ();rigi = GetComponent<Rigidbody2D> ();}// Update is called once per framevoid FixedUpdate () {float move = Input.GetAxis ("Horizontal");anim.SetFloat ("speed",Mathf.Abs(move));rigi.velocity = new Vector2 (move * maxSpeed,rigi.velocity.y);if ((move > 0 && !facingright) || (move < 0 && facingright))Flip ();}void Flip(){facingright = !facingright;Vector3 theScale = transform.localScale;theScale.x *= -1;transform.localScale = theScale;}}

这里是我的5.5的,与视频中不同的是如下定义

Rigidbody2D rigi;

rigi = GetComponent<Rigidbody2D>();

视频中的是旧版的,可以直接用默认rigidity2D,而unity5更严格了。

【注意】我试了运行,发现动画切换有点慢,才在动画状态机里发现了不同。

如下图这里unity5多了个Has Exit Time,即是否等动画播完才切换,默认是开启的。这里我们可以去掉勾选。在某些项目中,比如人物挂了,就倒地完成才消失,不同人物倒地时间不同于是需要这个选项。

5.跳跃是一串只有一帧的动画


新建11个

赋值


这样能让跳跃和落下使用同一套动画。

视频最后是连跳的实现和禁止跳跃时的转向。

OVER



0 0
原创粉丝点击