unity中的状态机
来源:互联网 发布:足球排阵容软件 编辑:程序博客网 时间:2024/05/29 04:28
状态机是unity中很重要的一个概念,不要听这个名词很复杂,其实是很简单的东西,比如一个人,有吃饭,睡觉,学习这些不同的状态,游戏中的东西,也有不同的状态,下面以怪物为例,说明unity中状态机的用法.
第一步 生成不同状态下的动画
美工一般会把不同的状态先做成一些序列贞,放在一个图里面.我们一般先确定开始的时候,怪物的状态要用到哪些图片,把这几个图选中,往Hierachy窗口一拖,就生成了第一个状态的动画.我们叫他idle状态,然后我们找到追赶玩家要用到的几张图片,全选后,拖到刚才的动画上(不要拖到新位置,拖到新位置的话,会生成新的),这样就会给刚才那个对象新加了一个动画,重复这个动作,直到所有动画添加完
第二步 添加不同的变量,来控制状态之间的切换
比如怪物跟玩家接近一定的距离,就要切换到追赶玩家的状态
怪物死的时候,就要切换到死亡状态,因此要设2个变量
Run,dead都是bool型的
然后在animator窗口,创建状态切换线,任何状态在dead等于true的时候,切换到dead,idle状态下run为true的时候,切换到run,run状态下,run为false就切换回idle
第三步在程序里设置动画的变量,以便状态机控制器能正确的切换不同状态
public class enemy : MonoBehaviour
{
public Transform Player;
public float attackDistance = 25;
public Animator anim;
// Use this for initialization
void Start ()
{
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update ()
{
float distance = Vector3.Distance(transform.position, Player.position);
//print(distance);
if (distance < attackDistance)
{
anim.SetBool("Run", true);
}
else
{
anim.SetBool("Run", false);
}
if (transform.position.x < Player.position.x)
{
transform.localScale = new Vector3(1, 1, 1);
transform.position = new Vector3(transform.position.x + 0.01f, transform.position.y, transform.position.z);
}
else
{
transform.localScale = new Vector3(-1, 1, 1);
transform.position = new Vector3(transform.position.x - 0.01f, transform.position.y, transform.position.z);
}
}
}
比如上面的代码,检查玩家和怪物之间的距离,距离小于25以后,就设置动画的run变量为true,这样状态机控制器,就会把怪物的动画切换到run的状态了
- unity中的状态机
- unity状态机
- C# FSM (仿Unity 中的Mecanim动画系统的状态机)
- unity-状态机中Transitions中的Solo和Mute
- unity-动画状态机Animator
- unity-动画状态机Animator
- 通用unity状态机
- unity怪物的状态机
- [Unity插件]PlayMaker状态机
- Unity 控制动画状态机
- Unity框架——状态机
- Unity中状态机的使用
- Unity动画,状态机的使用
- Unity中实现一个状态机
- 游戏中的状态机
- Android中的状态机 机制
- Android中的状态机 机制
- Android中的状态机 机制
- 计算机网络原理笔记(一、概述)
- Android SDK Manager设置代理服务器和端口
- 2.1读写图片
- 调试程序时怎么查看new出来的数组元素值
- javascript 随机生成一个0-9的随机数
- unity中的状态机
- 计算机网络原理笔记(二、物理层)
- 下载进度指示器初版。。。
- 【慕课笔记】U2 封装 第7节 JAVA中的静态内部类
- UIGestureRecognizer-手势识别器
- Cocos2d-x shader学习1: 灰度shader
- MongoDB 初见指南
- 无缝隙滚动
- Oracle学习(序言)