tip:transition 勾选Has Exit Time B动画播放完毕后就可以自己返回A不用代码控制。因为想做一个小人静止时 隔两秒会摆动小手的特效。

附上代码参考:

 using UnityEngine;
using System.Collections; public class playeMove : MonoBehaviour
{ public Animator PlayerAnimator;
public const int HERO_UP = ;
public const int HERO_RIGHT = ;
public const int HERO_DOWN = ;
public const int HERO_LEFT = ;
float FreakTime=;
//人物当前行走的方向状态
public int state = ;
//人物移动速度
public int moveSpeed =; //初始化人物位置
public void Awake()
{
state = HERO_UP;
}
// Use this for initialization
void Start()
{ } // Update is called once per frame
void Update()
{ //获取控制的方向, 上下左右,
float KeyVertical = Input.GetAxis("Vertical");
float KeyHorizontal = Input.GetAxis("Horizontal");
//Debug.Log("keyVertical" + KeyVertical);
//Debug.Log("keyHorizontal" + KeyHorizontal);
if (KeyVertical <)
{
setHeroState(HERO_DOWN);
}
else if (KeyVertical >)
{
setHeroState(HERO_UP);
} if (KeyHorizontal >)
{
setHeroState(HERO_RIGHT);
}
else if (KeyHorizontal <)
{
setHeroState(HERO_LEFT);
} //得到正在播放的动画状态
AnimatorStateInfo info = PlayerAnimator.GetCurrentAnimatorStateInfo(); //如果没有按下方向键且状态不为walk时播放走路动画
if (KeyVertical != || KeyHorizontal != && !info.IsName("Walk"))
{
PlayerAnimator.Play("Walk");
}
//否则如果按下方向键且状态为walk时播放静止动画
else if((KeyVertical == && KeyHorizontal == && info.IsName("Walk") ))
{
PlayerAnimator.Play("Idle");
} //这里设定是玩家静止时隔2s会摆动一次
if (KeyVertical == && KeyHorizontal == )
{
//当玩家静止时,FreakTime才会计时
if (info.IsName("Idle"))
{
FreakTime -= Time.deltaTime;
if (FreakTime <= )
{
Debug.Log(FreakTime);
FreakTime = ;
//FreakingOut设置为播放后自动退出到idle
PlayerAnimator.Play("FreakingOut ");
}
}
} } void setHeroState(int newState)
{
//根据当前人物方向与上一次备份的方向计算出模型旋转的角度
int rotateValue = (newState - state) * ;
Vector3 transformValue = new Vector3(); //播放行走动画 //模型移动的位置数值
switch (newState)
{
case HERO_UP:
transformValue = Vector3.forward * Time.deltaTime;
break;
case HERO_DOWN:
transformValue = (-Vector3.forward) * Time.deltaTime;
break;
case HERO_LEFT:
transformValue = Vector3.left * Time.deltaTime;
break;
case HERO_RIGHT:
transformValue = (-Vector3.left) * Time.deltaTime;
break;
} transform.Rotate(Vector3.up, rotateValue);
//移动人物
transform.Translate(transformValue * moveSpeed, Space.World);
state = newState;
} }

unity3d之控制人物转向移动并播放动画的更多相关文章

  1. (转)在Unity3D中控制动画播放

    用Unity3D也算是好久了,但是每次做项目总还是能学到新的东西.这次做一个TPS的项目就遇到了这样一个问题,如何同时在上下半身播放不同的动画?解决方法其实是很简单,但由于对于动画资源的了解不足导致问 ...

  2. [Unity3D]Unity3D圣骑士当游戏开发商遭遇Mecanim动画系统

            大家好.我是秦培.欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 博主总算赶在这个月底写出了这篇文章.这个月由于期末考试一直没时间研究太多关于技术方面 ...

  3. Unity3D研究院之使用Animation编辑器编辑动画(五十四)

     Unity提供了Animation编辑器,它可以为我们编辑物理动画.举个例子比如场景中有一个来回摇动的秋千,这个秋千在项目中完全只起到衬托作用,它不会与别的游戏对象有任何交互.如果这个秋千也用代码来 ...

  4. Unity3D研究院之使用Animation编辑器编辑动画

     Unity提供了Animation编辑器,它可以为我们编辑物理动画.举个例子比如场景中有一个来回摇动的秋千,这个秋千在项目中完全只起到衬托作用,它不会与别的游戏对象有任何交互.如果这个秋千也用代码来 ...

  5. Android开发教程AnimationDrawable逐帧播放动画

    下面我们一起来看篇Android开发AnimationDrawable控制逐帧播放动画实现过程,希望文章对各位朋友带不一些帮助. 当我们点击按钮时,该图片会不停的旋转,当再次点击按钮时,会停止在当前的 ...

  6. Android PowerImageView实现,可以播放动画的强大ImageView

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11100315 我个人是比较喜欢逛贴吧的,贴吧里总是会有很多搞笑的动态图片,经常看一 ...

  7. HTML5 - 使用JavaScript控制<audio>音频的播放

    有时我们需要使用js来控制播放器实现音乐的播放,暂停.或者使用js播放一些音效.   1,通过JavaScript控制页面上的播放器 比如把页面上添加一个<audio>用来播放背景音乐(由 ...

  8. iOS控件——UIView与UIImageView播放动画的实现方法

    1.UIView //初始状态 [UIView animateWithDuration:(int) animations:^{ //最终状态 }completion:^(BOOL finished){ ...

  9. qt程序启动播放动画

    qt程序启动播放动画 编辑删除转载 2016-01-20 10:23:11 标签:qt启动动画 1.播放动画 QAxWidget *flash = , ); //QAxWidget使用的是Active ...

随机推荐

  1. 正则表达式 python

    下面这种方式 从结果上看 匹配的是关键字, 但是不是 每一次都可以 100% 准确 search_words_dict = { "肠炎宁": 0, "维生素AD" ...

  2. Azure自定义角色实现RBAC

    简要说明: 当前Azure Portal上只能针对订阅或具体某一资源,实现访问控制,也就是对某一具体资源实现访问/使用/删除,但无法实现创建.例如:当前的需求为,新添加用户只具有对CDN服务的管理使用 ...

  3. 进阶篇:5.3.1)均方根法(Root-Sum-Squares,RSS)

    本章目的:了解均方根法,运用均方根法. 1.定义 均方根法(Root-Sum-Squares,RSS):均方根法是统计分析法的一种,是把尺寸链中的各个尺寸公差的平方之和再开根即得到关键尺寸的公差. 其 ...

  4. PIE SDK影像坏线修复

    1.算法功能简介 坏条带的由来:2003年5月31日,Landsat-7ETM+机载扫描行校正器(SLC) 故障,导致此后获取的影像出现了数据条带丢失,严重影响了Landsat ETM遥感影像的使用. ...

  5. Delphi XE TStringBuilder

    function T_SunnySky_SDK.JoinItems(AParamDic: TDictionary<string, string>): string; var sb : TS ...

  6. 性能调优之vmstat命令(转)

    vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.IO读写.CPU活动等进行监视.它是对系统的整体情况进行统计,不足之处是无法对某 ...

  7. 根据word模版导入word中用户填写的数据

    背景 客户有个需求:从word格式文档中读项目关键信息到数据库中,如:第一个表格中的联系人,项目名之类的信息,word中的格式不是固定的,可以会有些改动. 分析 方案1:读取第一个表格,然后再读取表格 ...

  8. Unity QualitySettings.antiAliasing 抗锯齿

    QualitySettings.antiAliasing 抗锯齿 Description 描述 Set The AA Filtering option. 设置AA过滤选项. The AntiAliaz ...

  9. (转)Linux企业运维人员常用的150个命令分享

    Linux企业运维人员常用的150个命令分享 原文:http://www.jb51.net/article/127014.htm 本文将向大家介绍Linux企业运维人员常用的150个命令,如有不足之处 ...

  10. sencha touch textarea 手机上不显示滚动条,且不能滚动

    最近在项目中发现 sencha touch 中的 textarea 在手机上不显示滚动条,也不能滚动. 在浏览器中之所以能显示滚动条滚动,那是浏览器为 textarea 添加的滚动条. 但在手机中是不 ...