[官方文档] (https://kybernetik.com.au/animancer/docs/introduction/)
# 快速开始
1
2
3
4
5
6
7
8
9
10
11
12
using Animancer;
using UnityEngine;
public sealed class PlayAnimationOnEnable : MonoBehaviour
{
[SerializeField] private AnimancerComponent _Animancer;
[SerializeField] private AnimationClip _Animation;
private void OnEnable()
{
_Animancer.Play(_Animation);
}
}
简单移动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using Animancer;
using UnityEngine;
public sealed class BasicMovementAnimations : MonoBehaviour
{
[SerializeField] private AnimancerComponent _Animancer;
[SerializeField] private AnimationClip _Idle;
[SerializeField] private AnimationClip _Move;
private void Update()
{
float forward = ExampleInput.WASD.y;
if (forward > 0)
{
_Animancer.Play(_Move);
}
else
{
_Animancer.Play(_Idle);
}
}
}
Transitions
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
[SerializeField]
private AnimancerComponent _Animancer;
[SerializeField]
private ClipTransition _Idle;
[SerializeField]
private ClipTransition _Action;
private void OnEnable()
{
_Action.Events.OnEnd = OnActionEnd;
_Animancer.Play(_Idle);
}
private void OnActionEnd()
{
_Animancer.Play(_Idle);
}
private void Update()
{
if (ExampleInput.LeftMouseUp)
{
_Animancer.Play(_Action);
}
}
Basic Character
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
sing Animancer;
using UnityEngine;
public sealed class BasicCharacterAnimations : MonoBehaviour
{
[SerializeField] private AnimancerComponent _Animancer;
[SerializeField] private ClipTransition _Idle;
[SerializeField] private ClipTransition _Move;
[SerializeField] private ClipTransition _Action;
private enum State
{
NotActing,
Acting,
}
private State _CurrentState;
private void Awake()
{
_Action.Events.OnEnd = OnActionEnd;
}
private void OnActionEnd()
{
_CurrentState = State.NotActing;
UpdateMovement();
}
private void Update()
{
switch (_CurrentState)
{
case State.NotActing:
UpdateMovement();
UpdateAction();
break;
case State.Acting:
UpdateAction();
break;
}
}
private void UpdateMovement()
{
_CurrentState = State.NotActing;
float forward = ExampleInput.WASD.y;
if (forward > 0)
{
_Animancer.Play(_Move);
}
else
{
_Animancer.Play(_Idle);
}
}
private void UpdateAction()
{
if (ExampleInput.LeftMouseUp)
{
_CurrentState = State.Acting;
_Animancer.Play(_Action);
}
}
}