unity 动画控制器
unity 可以用两种方式控制动画
1. Animation
Animation an;//动画组件
void Start()
{
an = GetComponent<Animation>(); //获取动画组件
}
public enum PlayerState
{
Idle,
Fire,
Reload,
Melee
}
void PlayAnimation(GameRes.PlayerState ps)
{
switch (ps)
{
case GameRes.PlayerState.Idle:
an.Play("Idle");
break;
case GameRes.PlayerState.Fire:
an.Play("Fire");
break;
case GameRes.PlayerState.Reload:
an.Play("Reload");
break;
case GameRes.PlayerState.Melee:
an.Play("Melee");
break;
default:
break;
}
}
2.Animator
//检查是否正在播放jump动画.
AnimatorStateInfo stateinfo = anim.GetCurrentAnimatorStateInfo(0);
bool playingJump = stateinfo.IsName("jump");
if(playingJump)
{
if(stateinfo.normalizedTime < 1.0f)
{
//正在播放
}
else
{
//播放结束
}
}
控制播放时间
Animator ator = go1.GetComponent<Animator>();
var stateinfo = ator.GetCurrentAnimatorStateInfo(0);
if(stateinfo.IsName("Jump"))
{
ator.speed = 2;
}
用Animator实现人物,走、跑。
void Move()
{
Vector3 dir = Vector3.zero;
if (character.isGrounded)
{
float h = Input.GetAxis("Horizontal") * speed;
float v = Input.GetAxis("Vertical") * speed;
dir = new Vector3(h, 0, v);
if (Mathf.Abs(h) > 0 || Mathf.Abs(v) > 0&&po)
{
an.SetInteger("Walk", 5);
if (!ac.isPlaying)
{
ac.PlayOneShot(Clip);
}
transform.rotation = Quaternion.LookRotation(new Vector3(h, 0, v));//注视旋转
}
else if (Input.GetKeyDown(KeyCode.K))
{
if (p)
{
an.SetInteger("Run", 4);
po = false;
if (Mathf.Abs(h) > 0 || Mathf.Abs(v) > 0 && po == false)
{
transform.rotation = Quaternion.LookRotation(new Vector3(h, 0, v));//注视旋转
}
p = !p;
}
else
{
po = true;
an.SetInteger("Run", 2);
p = !p;
}
}
else if (Input.GetKeyDown(KeyCode.L))
{
if (q)
{
an.SetInteger("Sneak", 2);
q = !q;
}
else
{
an.SetInteger("Sneak", 0);
q = !q;
}
}
else
{
an.SetInteger("Walk", 3);
}
}
character.SimpleMove(dir);
}
实现摄像机跟随
private Transform player;
public float x=4, y=5;
public float speed = 2;
void Start()
{
//通过标签获取游戏中的对象
player = GameObject.FindWithTag("Player").transform;
}
void Update()
{
if (player != null)
{
//计算出摄像机的目标位置,即玩家角色的位置+摄像机的偏移值
Vector3 targetPos = player.position + new Vector3(0, x, y);
//设置摄像机位置
transform.position = Vector3.Lerp(transform.position, targetPos, speed * Time.deltaTime);
//计算出摄像机面向玩家角色的旋转角度
Quaternion targetRotation = Quaternion.LookRotation(player.position - transform.position);
//设置摄像机旋转
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, speed * Time.deltaTime);
}
}
unity 动画控制器相关推荐
- Unity动画控制器
添加Animator组件,拖入预制体的动画控制器 双击进入Animator面板 点了线之后给这个线添加Conditions 网上的博文 动画控制器 动画控制器
- Unity动画控制器animator.CrossFade
需要特别注意: 1.CrossFade虽然可以不用任何逻辑来链接而直接跳转,但是CrossFade只能覆盖其他动画,当当前动画播放完毕而没有跳出这个动画时再次调用CrossFade将会失败.造成动画依 ...
- 关于Unity中Mecanim动画的动画状态代码控制与代码生成动画控制器
对于多量的.复杂的.有规律的控制器使用代码生成 动画状态代码控制 1:每个动画状态,比如进入状态,离开状态, 等都有可能需要代码来参与和处理,比如,进入这个动画单元后做哪些事情,来开这个动画单元后做哪 ...
- Unity 2D动画控制器详解
http://www.tairan.com/archives/6939#16 文章目录 开始 过渡 编辑过渡 颜色变化 动画参数 复习一下 CatConga动画 CatDisappear Clip A ...
- 【Unity 学习笔记】动画组件和动画控制器
动画是一款游戏不可缺少的一部分.在Unity中,我们可以直接使用Unity自带的动画系统来制作我们想要的动画,其操作相当便捷. 帧动画是2D像素游戏的主流,我将以帧动画为例记录我最近学习动画系统的一些 ...
- Unity【NGUI】【UGUI】 动画效果实现,AnimationCurve曲线动画控制器,支持动画完成 回调
动画效果如下: 展示图1 如下: 展示图2 如下: 展示图3 如下: 功能: 如上图所示 移动,旋转,缩放,渐变透明 都可并行实现 只要脑洞够大,创意动画效果随你实现. 注:所有动画都是用曲线[An ...
- Unity简单操作:设置触发条件 切换Animator动画控制器 里面播放的Animation动画
确保animator里面有多个animation动画剪辑,点击Animator里面[Parameters]添加触发条件 添加连线箭头并且 给箭头连线绑定触发事件 添加连线箭头并且 给箭头连线绑定触发事 ...
- AnimatorController即动画控制器创建的BUG
AnimatorController即动画控制器创建的BUG //------------------------------------------------------------------- ...
- 动画组件和动画控制器资源介绍、动画状态机
一.动画控制器资源:Create-Animator Control 相当于一个容器. 窗口包括: a.Base Layer层窗口:控制角色身体中各部分的运动,这个离不开Body Mask. b.Par ...
最新文章
- 10种Git技巧,让你省时省力又省心!
- 一文看懂深度学习模型压缩和加速
- JS 将负数转化为正数
- 防止电脑自动休眠小妙招
- jquery validation remote进行唯一性验证时只使用自定义参数,不使用默认参数
- MySQL【环境搭建 01】Linux root 用户部署 mysql-5.7.28 及 not allowed to connect to this MySQL server 和中文乱码问题处理
- UVa 11121 Base -2(负数进制)
- Java黑皮书课后题第5章:*5.14(计算最大公约数)下面是求两个整数n1和n2的最大公约数的程序清单5-9的另一种解法:...提示用户输入两个正整数,然后显示最大公约数
- Fiddler监听Https请求响应
- Opportunity在Fiori cloud system上编辑之后超时的根源分析
- 某测试仪控制系统的设计方案--ARM+FPGA+NIOS
- ux.form.field.Year 只能选年的时间扩展
- centos远程连接mysql_CentOS 配置mysql允许远程登录
- Oracle Solaris 11 11/11 新增功能
- 水星怎么设置网速最快_水星路由器怎么设置网速 - 卡饭网
- ESXi主机 TPM 证明警报
- C# Entity单条件查询与多条件查询
- Android实现PDF格式文件预览
- 羊毛党千亿产业链,信息安全何去何从?
- 13-ZF标志位,JB和JNB跳转指令