Unity3D Mecanim在某个状态下动画重新播放
来源:互联网 发布:sql 已注册的服务器 编辑:程序博客网 时间:2024/06/04 19:33
最近,公司想把旧的动画系统转到使用Mecanim来实现,让我来做技术预演。之前学习Unity3D的时候有接触过Mecanim,不过都忘了,所以又重新学了一遍。重新看了官网的Mecanim视频教程,凭我这半吊子英语水平也只是一知半解,所以又找了个视频看看,中国人的Mecanim教程。经过近1个半小时的努力,总算是实现了用Mecanim来控制各个动画的播放。可以做到Idle、Run、Attack、Hit和Die这五个状态的转换。当验收时主管提出但人物处于Hit状态时,再次受到Hit时动画要重头播放,故要重新返工。先 是自己摸索一下Animator类是否支持动画重新播放,查看了文档,无奈官方文档 没有详细介绍Animator类,中文文档根本就没有介绍Animator类。现在就只能靠猜了,看来看去也就Animator下的 StartPlayback()这个方法比较靠谱。可是试来试去还是不得法,最后就只能靠搜索引擎了。在这我不得不吐槽一下,做技术的还是用谷歌吧,百度 搜不到的东西谷歌也许就能搜到。好吧,我就是用谷歌搜到了,网址在这,我会跟你说这是日本网站么。
好吧,自己也实现了一把,送给有缘看到这篇博客的人,免去了找资料的痛苦。简化了Mecanim的状态,只有Idle和Hit两个状态。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using UnityEngine;
using System.Collections;
public class SimpleExample : MonoBehaviour {
Animator anim =
null
;
AnimatorStateInfo currentBaseStage;
int idle = Animator.StringToHash(
"Base Layer.Idle"
);
int hit = Animator.StringToHash(
"Base Layer.Hit"
);
bool isHit =
false
;
//在播放受击动画时是否再次受击 true: 受击
bool isPlayBack =
false
;
//是否重播 true: 重播
// Use this for initialization
void Start () {
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update () {
currentBaseStage = anim.GetCurrentAnimatorStateInfo(0);
if
(currentBaseStage.nameHash == idle && !anim.IsInTransition(0))
{
anim.SetBool(
"hit"
,
false
);
isHit =
false
;
}
//hit
if
(!isHit && Input.GetKey(KeyCode.H) && !anim.IsInTransition(0) && currentBaseStage.nameHash == idle)
{
anim.SetBool(
"hit"
,
true
);
anim.StartRecording(0);
//记录重播开始位置
isHit =
true
;
}
if
(isHit && Input.GetKey(KeyCode.H) && currentBaseStage.nameHash == hit)
{
//二次受击
isPlayBack =
true
;
anim.StopRecording();
//停止记录重播
anim.StartPlayback();
//开始重播
anim.playbackTime = 0f;
//从0s开始重播
}
//设置现在重播时播放的时间
if
(isPlayBack)
{
float newPlaybackTime = anim.playbackTime + Time.deltaTime;
if
(newPlaybackTime > anim.recorderStopTime) {
newPlaybackTime = 0;
anim.StopPlayback();
isPlayBack =
false
;
}
anim.playbackTime = newPlaybackTime;
}
}
}
0 0
- Unity3D Mecanim在某个状态下动画重新播放
- Unity3D Mecanim在某个状态下动画重新播放
- transition状态下Mecanim动画的跳转
- unity3d Mecanim动画系统获取动画层、动画状态等方法
- unity3d Mecanim动画系统获取动画层、动画状态等方法
- Unity3D-Mecanim动画系统-IK
- Unity3D之Mecanim动画系统
- Unity3D深入浅出 - 动画系统(Mecanim)
- Unity3D之Mecanim动画系统
- Unity3d 4.0新动画系统Mecanim
- Unity3D 4.0新功能:Mecanim动画系统基础教程
- Unity3D 4.0新功能:Mecanim动画系统基础教程
- Unity3D 4.0新功能:Mecanim动画系统基础教程
- Unity3d 4.0新动画系统Mecanim
- Unity3D 4.0新功能:Mecanim动画系统基础教程
- Unity3D 4.0新功能:Mecanim动画系统基础教程
- [Unity3D]Unity4新的动画系统Mecanim
- Unity3D 4.0新功能:Mecanim动画系统基础教程
- spring的学习资料
- 13级中欧企业联合大学P-MBA开班
- iOS之MVC
- hdu2088 Box of Bricks
- 使用IE浏览器js调试debug
- Unity3D Mecanim在某个状态下动画重新播放
- Hadoop学习笔记(三)——zookeeper的一致性协议:ZAB
- vpn启动失败
- eclipse中创建Maven project并且转换为Dynamic web project
- Android alertDialog
- 国内怎么上facebook国内注册facebook详细步骤E9加速器分享
- iOS 开发 之 友盟分享
- Oracle VM VirtualBox使用的注意事项
- 算法系列