unity3d之控制人物转向移动并播放动画
tip:transition 勾选Has Exit Time B动画播放完毕后就可以自己返回A不用代码控制。因为想做一个小人静止时 隔两秒会摆动小手的特效。
附上代码参考:
1 using UnityEngine; 2 using System.Collections; 3 4 public class playeMove : MonoBehaviour 5 { 6 7 public Animator PlayerAnimator; 8 public const int HERO_UP = 0; 9 public const int HERO_RIGHT = 1; 10 public const int HERO_DOWN = 2; 11 public const int HERO_LEFT = 3; 12 float FreakTime=3; 13 //人物当前行走的方向状态 14 public int state = 0; 15 //人物移动速度 16 public int moveSpeed =2; 17 18 //初始化人物位置 19 public void Awake() 20 { 21 state = HERO_UP; 22 } 23 // Use this for initialization 24 void Start() 25 { 26 27 } 28 29 // Update is called once per frame 30 void Update() 31 { 32 33 34 //获取控制的方向, 上下左右, 35 float KeyVertical = Input.GetAxis("Vertical"); 36 float KeyHorizontal = Input.GetAxis("Horizontal"); 37 //Debug.Log("keyVertical" + KeyVertical); 38 //Debug.Log("keyHorizontal" + KeyHorizontal); 39 if (KeyVertical <0) 40 { 41 setHeroState(HERO_DOWN); 42 } 43 else if (KeyVertical >0) 44 { 45 setHeroState(HERO_UP); 46 } 47 48 if (KeyHorizontal >0) 49 { 50 setHeroState(HERO_RIGHT); 51 } 52 else if (KeyHorizontal <0) 53 { 54 setHeroState(HERO_LEFT); 55 } 56 57 58 59 //得到正在播放的动画状态 60 AnimatorStateInfo info = PlayerAnimator.GetCurrentAnimatorStateInfo(0); 61 62 //如果没有按下方向键且状态不为walk时播放走路动画 63 if (KeyVertical != 0 || KeyHorizontal != 0 && !info.IsName("Walk")) 64 { 65 PlayerAnimator.Play("Walk"); 66 } 67 //否则如果按下方向键且状态为walk时播放静止动画 68 else if((KeyVertical == 0 && KeyHorizontal == 0 && info.IsName("Walk") )) 69 { 70 PlayerAnimator.Play("Idle"); 71 } 72 73 //这里设定是玩家静止时隔2s会摆动一次 74 if (KeyVertical == 0 && KeyHorizontal == 0) 75 { 76 //当玩家静止时,FreakTime才会计时 77 if (info.IsName("Idle")) 78 { 79 FreakTime -= Time.deltaTime; 80 if (FreakTime <= 0) 81 { 82 Debug.Log(FreakTime); 83 FreakTime = 2; 84 //FreakingOut设置为播放后自动退出到idle 85 PlayerAnimator.Play("FreakingOut "); 86 } 87 } 88 } 89 90 91 } 92 93 94 void setHeroState(int newState) 95 { 96 //根据当前人物方向与上一次备份的方向计算出模型旋转的角度 97 int rotateValue = (newState - state) * 90; 98 Vector3 transformValue = new Vector3(); 99 100 //播放行走动画 101 102 //模型移动的位置数值 103 switch (newState) 104 { 105 case HERO_UP: 106 transformValue = Vector3.forward * Time.deltaTime; 107 break; 108 case HERO_DOWN: 109 transformValue = (-Vector3.forward) * Time.deltaTime; 110 break; 111 case HERO_LEFT: 112 transformValue = Vector3.left * Time.deltaTime; 113 break; 114 case HERO_RIGHT: 115 transformValue = (-Vector3.left) * Time.deltaTime; 116 break; 117 } 118 119 transform.Rotate(Vector3.up, rotateValue); 120 //移动人物 121 transform.Translate(transformValue * moveSpeed, Space.World); 122 state = newState; 123 } 124 125 126 } 127
View Code
转载于:https://www.cnblogs.com/ninomiya/p/6671315.html
unity3d之控制人物转向移动并播放动画相关推荐
- android 自定义view 动画效果,Android自定义view----音乐播放动画
先给大家看一下效果,因为我也不知道这个东西具体叫什么,标题上面写的是"音乐播放动画",可能描述的不太准确. 效果图.gif 前言 最近项目中做了一个音频播放的功能,播放条上需要一个 ...
- 【Playable API】不用Animator如何播放动画?
你好,我是郑洪智,你可以叫我大智. 先问你一个问题:播放动画不想用Animator搞一堆Animator Controller,怎么做? Unity老玩家可能会先想到:Legacy Animation ...
- CSS 帧动画 播放动画
CSS3 帧动画 amimation @keyframes 在 CSS3 出现之前,动画都是通过 JavaScript 动态的改变元素的样式属性来完成了,这种方式虽然能够实现动画,但是在性能上存在一些 ...
- 怎么在FLASH的场景中控制影片剪辑的播放和停止
<--好消息!好消息!好消息! 粉丝超过2000的公众号主快来接单吧,快来领取你的第一笔广告费.(粉丝数不够的小伙伴,请私信我一并解决) 新用户注册红包1.8元,新用户注册并接单红包9.9元. ...
- Unity3D-游戏ARVR开发进阶课程 - 动画系统-宋晓波-专题视频课程
Unity3D-游戏ARVR开发进阶课程 - 动画系统-10610人已学习 课程介绍 本套视频培训课程中会深入学习Unity中的Mecanim动画系统.包括动画剪辑.动画控制器.动画状 ...
- Unity(三十九):非运行状态下脚本播放动画、Animator Override Controller、RuntimeAnimatorController
非运行状态下脚本播放动画 脚本 using UnityEngine;namespace Example_01.Scripts {[RequireComponent(typeof(Animator))] ...
- 【web前端】JavaScript实现图片幻灯片滚动播放动画效果
JavaScript实现图片幻灯片滚动播放动画效果 by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.co ...
- Unity animator不剪辑动画实现 分段播放动画
public Animator anim;private AnimatorStateInfo animInfo; /// <summary>/// 控制动画暂停和播放/// </su ...
- 让任务管理器播放动画
一.源起 原先在B站上看到各式各样拿Windows任务管理器播放动画的视频,感觉很新奇,也有人无私分享代码.有些视频中的动画是后期加上的,也有些是实时渲染的.不管怎样,像实时渲染这类程序就非常&quo ...
最新文章
- 机器学习笔记:为什么要对数据进行归一化处理?
- Python 【大风号】短视频的自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、西瓜视频、微信视频号等平台的视频自动化同步发布
- 科技推动时代发展,浅谈IT技术如何改善数据中心运维管理
- tensorflow中name_scope和variable_scope变量的使用
- 结构体实验报告总结_解读!清华、谷歌等10篇强化学习论文总结
- C++、python、CUDA性能分析--矩阵乘法
- 属于HTML文档头部相关标记,下列选项中,属于HTML文档头部相关标记的是 答案:title/titlemeta /...
- Android之jni编译出现multiple definition of ‘××××ב
- Object 的静态方法之 defineProperties 以及数据劫持效果
- Xcode7 添加PCH文件
- wordpress使用 ftp使用问题总结
- 中查询一个文件夹下文件数量_如何在 Bash 中使用循环 | Linux 中国
- 用诗歌描写计算机课,小班诗歌公开课教案范文【3篇】
- oracle11g 未,Oracle11g链接提示未“在本地计算机注册“OraOLEDB.Oracle”解决方法
- mysql数据库:mysql增删改、单表、多表及子查询
- 一次排查服务器端接口报500错误的经历
- R语言金融基础:tidyquant获取数据(股票每日行情)
- java 外文参考文献_java英文参考文献
- visual studio html插件,实用的 Visual Studio Code 插件
- Java项目:SSM校园共享自行车出租管理系统
热门文章
- mysql 查询某个字段SQL语句【mysql语句】
- MAC 修改文件夹以及子文件夹和子文件权限 以及 修改文件夹owner
- 使用Kylin导入JDBC数据源遇到的问题
- c语言第六次上机作业,C语言第五次上机作业参考答案
- java获取本周的开始时间和结束时间_创业板注册制开始时间/股票开户流程结束后,怎么炒股?...
- mysql动态变量查询_MySQL将变量传递给动态查询
- python调用numpy视频_Numpy的文件输入和输出使用
- gettype获取类名_在TypeScript中运行时获取对象的类名
- MongoDB简介、在node中使用MongoDB
- 麦肯锡方法中的经验(读书摘要)