コード例 #1
0
ファイル: AnimatorHelper.cs プロジェクト: siwenRen/Wolf
	public void CrossFade (CrossFadeParam param)
	{
		nextActionParam = param;
	}
コード例 #2
0
ファイル: AnimatorHelper.cs プロジェクト: siwenRen/Wolf
	public void Play (CrossFadeParam param)
	{
		param.crossFadeDuration = 0;
		CrossFade (param);
	}
コード例 #3
0
ファイル: AnimatorHelper.cs プロジェクト: siwenRen/Wolf
	private void DoCrossFade (CrossFadeParam param)
	{
		var playSpeed = forceSpeed ? speed : param.speed;
		if (0 == playSpeed) {
			return;
		}
		foreach (var a in animators) {
			if (0 >= a.layerCount) {
				continue;
			}
			var stateName = param.stateName;
			var stateNameHash = Animator.StringToHash (stateName);
			if (!a.HasState (0, stateNameHash)) {
				stateName = defaultStateName;
				stateNameHash = Animator.StringToHash (stateName);
				if (!a.HasState (0, stateNameHash)) {
					continue;
				}
			}
			a.speed = playSpeed;
			var currentState = a.GetCurrentAnimatorStateInfo (0);
			var nextState = a.GetNextAnimatorStateInfo (0);
			if (param.reset 
				|| (!currentState.IsValid () || currentState.shortNameHash != stateNameHash) 
				|| (nextState.IsValid () && nextState.shortNameHash != stateNameHash)) {
				if (0 < param.crossFadeDuration) {
					a.CrossFade (stateName, param.crossFadeDuration, -1, param.normalizedTime);
				} else {
					a.Play (stateName, -1, param.normalizedTime);
				}
			}
		}
	}