unity3d之控制人物转向移动并播放动画
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之控制人物转向移动并播放动画的更多相关文章
- (转)在Unity3D中控制动画播放
用Unity3D也算是好久了,但是每次做项目总还是能学到新的东西.这次做一个TPS的项目就遇到了这样一个问题,如何同时在上下半身播放不同的动画?解决方法其实是很简单,但由于对于动画资源的了解不足导致问 ...
- [Unity3D]Unity3D圣骑士当游戏开发商遭遇Mecanim动画系统
大家好.我是秦培.欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 博主总算赶在这个月底写出了这篇文章.这个月由于期末考试一直没时间研究太多关于技术方面 ...
- Unity3D研究院之使用Animation编辑器编辑动画(五十四)
Unity提供了Animation编辑器,它可以为我们编辑物理动画.举个例子比如场景中有一个来回摇动的秋千,这个秋千在项目中完全只起到衬托作用,它不会与别的游戏对象有任何交互.如果这个秋千也用代码来 ...
- Unity3D研究院之使用Animation编辑器编辑动画
Unity提供了Animation编辑器,它可以为我们编辑物理动画.举个例子比如场景中有一个来回摇动的秋千,这个秋千在项目中完全只起到衬托作用,它不会与别的游戏对象有任何交互.如果这个秋千也用代码来 ...
- Android开发教程AnimationDrawable逐帧播放动画
下面我们一起来看篇Android开发AnimationDrawable控制逐帧播放动画实现过程,希望文章对各位朋友带不一些帮助. 当我们点击按钮时,该图片会不停的旋转,当再次点击按钮时,会停止在当前的 ...
- Android PowerImageView实现,可以播放动画的强大ImageView
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11100315 我个人是比较喜欢逛贴吧的,贴吧里总是会有很多搞笑的动态图片,经常看一 ...
- HTML5 - 使用JavaScript控制<audio>音频的播放
有时我们需要使用js来控制播放器实现音乐的播放,暂停.或者使用js播放一些音效. 1,通过JavaScript控制页面上的播放器 比如把页面上添加一个<audio>用来播放背景音乐(由 ...
- iOS控件——UIView与UIImageView播放动画的实现方法
1.UIView //初始状态 [UIView animateWithDuration:(int) animations:^{ //最终状态 }completion:^(BOOL finished){ ...
- qt程序启动播放动画
qt程序启动播放动画 编辑删除转载 2016-01-20 10:23:11 标签:qt启动动画 1.播放动画 QAxWidget *flash = , ); //QAxWidget使用的是Active ...
随机推荐
- 扩大VirtualBox虚拟机磁盘的方法
之前在VirtualBox里安装了一个XP系统,当时只分配了10G磁盘空间,随着使用,空间不足了. 在虚拟机管理器里不能直接调整磁盘的大小,这里要用到VirtualBox安装目录下的VBoxManag ...
- 面试笔试(C++部分)
1.define 和const,inline的区别 define的缺点: 1.边界效应(必须加括号,才能避免边界效应) #define MUL(A,B) A*B 而在使用的时候,这样的调用: ,b=, ...
- leetcode-766-Toeplitz Matrix(每一条对角线元素的比较)
题目描述: A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element. Now ...
- 使用ceph-deploy进行ceph安装
ceph安装包介绍: 1.ceph-deploy: ceph的部署软件,通过该软件可以简便部署,这个软件并非整个ceph集群系统中必须的 2.ceph: ceph整个服务集群中的每个节点必须的软件.提 ...
- springAOP实现方法运行时间统计
aop的before和after,寻思分别在两个方法里获得当前时间,最后一减就可以了. 因此,今天就探讨了一下这个问题,和大家分享一下. 创建maven工程,引入spring的依赖包,配置好appli ...
- 最新 php oracle 数据库连接 数据库分页
php 5连接 oracle 10g php oracle 分页 <?php//buyicode studio 20/12/2009//总记录数$sql = "select ROWNU ...
- requests库的使用
requests库的使用 pip快速安装 pip install requests 请求方法 每一个请求方法都有一个对应的API,比如GET请求就可以使用get()方法: import reques ...
- mvn修改版本号命令
mvn -DnewVersion=1.0.0 -DgenerateBackupPoms=false versions:set
- LoadRunner性能测试结果分析(转载)
性能测试的需求指标:本次测试的要求是验证在30分钟内完成2000次用户登录系统,然后进行考勤业务,最后退出,在业务操作过程中页面的响应时间不超过3秒,并且服务器的CPU使用率.内存使用率分别不超过75 ...
- STM32的固件升级(RTT
STM32 通用 Bootloader ,让 OTA 更加 Easy 目前支持F1/F4,在线制作bootloader,准备固件升级,是RTT的云设备管理平台 https://mp.weixin.qq ...