原视频
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 initialization
void Start () {
anim = GetComponent ();
rigi = GetComponent ();
}
// Update is called once per frame
void 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
视频中的是旧版的,可以直接用默认rigidity2D,而unity5更严格了。
【注意】我试了运行,发现动画切换有点慢,才在动画状态机里发现了不同。
如下图这里unity5多了个Has Exit Time,即是否等动画播完才切换,默认是开启的。这里我们可以去掉勾选。在某些项目中,比如人物挂了,就倒地完成才消失,不同人物倒地时间不同于是需要这个选项。
文章图片
5.跳跃是一串只有一帧的动画
文章图片
文章图片
新建11个
文章图片
赋值
文章图片
这样能让跳跃和落下使用同一套动画。
视频最后是连跳的实现和禁止跳跃时的转向。
OVER
【毕设|【截图整理官方教程】unity 2D角色控制器 2D Character Controller】
推荐阅读
- Unity|Unity CharacterController控制人物移动(包括重力实现)
- Unity|Unity中RampTex介绍和应用: 溶解特效优化
- Unity|Unity中SmoothStep介绍和应用: 溶解特效优化
- java|JAVA-MYSQL-SSH酒店民宿客房管理系统
- 3D|Unity3D入门笔记01
- Unity3d|Unity Gameplay工具集(Unity Gameplay Tool Set)
- tp5.1 控制器初始化initialize(继承公共文件初始化)
- unity|Unity3D GUI控件
- unity|Unity3D中基本GUI控件介绍