场景设计
This commit is contained in:
@@ -77,12 +77,15 @@ namespace Cielonos.MainGame.Characters
|
||||
return;
|
||||
}
|
||||
|
||||
RuntimeFuncAnim currentFuncAnim = fullBodyFuncAnimSm.currentRuntimeFuncAnim;
|
||||
|
||||
lastFrameIntervals = currentIntervals;
|
||||
currentIntervals = fullBodyFuncAnimSm.currentRuntimeFuncAnim.GetEnablingIntervals();
|
||||
currentIntervals = currentFuncAnim.GetEnablingIntervals();
|
||||
disruptionStatus[DisruptionType.NormalExternal] = currentIntervals.Any(interval => interval.intervalType == IntervalType.ExternalDisruption);
|
||||
disruptionStatus[DisruptionType.NormalAction] = currentIntervals.Any(interval => interval.intervalType == IntervalType.ActionDisruption);
|
||||
disruptionStatus[DisruptionType.Movement] = currentIntervals.Any(interval => interval.intervalType == IntervalType.MovementDisruption);
|
||||
if (fullBodyFuncAnimSm.currentRuntimeFuncAnim.HasIntervalType(IntervalType.ForcedActionDisruption))
|
||||
|
||||
if (currentFuncAnim.HasIntervalType(IntervalType.ForcedActionDisruption))
|
||||
{
|
||||
disruptionStatus[DisruptionType.ForcedAction] = currentIntervals.Any(interval => interval.intervalType == IntervalType.ForcedActionDisruption);
|
||||
}
|
||||
@@ -90,7 +93,8 @@ namespace Cielonos.MainGame.Characters
|
||||
{
|
||||
disruptionStatus[DisruptionType.ForcedAction] = true;
|
||||
}
|
||||
if (fullBodyFuncAnimSm.currentRuntimeFuncAnim.HasIntervalType(IntervalType.ForcedExternalDisruption))
|
||||
|
||||
if (currentFuncAnim.HasIntervalType(IntervalType.ForcedExternalDisruption))
|
||||
{
|
||||
disruptionStatus[DisruptionType.ForcedExternal] = currentIntervals.Any(interval => interval.intervalType == IntervalType.ForcedExternalDisruption);
|
||||
}
|
||||
@@ -98,7 +102,9 @@ namespace Cielonos.MainGame.Characters
|
||||
{
|
||||
disruptionStatus[DisruptionType.ForcedExternal] = true;
|
||||
}
|
||||
isDuringRootMotion = currentIntervals.Any(interval => interval.intervalType == IntervalType.RootMotion);
|
||||
|
||||
isDuringRootMotion = currentFuncAnim.funcAnimData.animInfo.useRootMotion &&
|
||||
currentIntervals.Any(interval => interval.intervalType == IntervalType.RootMotion);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using DG.Tweening;
|
||||
using SLSFramework.General;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI;
|
||||
|
||||
@@ -9,8 +10,8 @@ namespace Cielonos.MainGame.Characters
|
||||
{
|
||||
protected AnimationSubcontrollerBase animationSc => owner.animationSc;
|
||||
protected Animator animator => animationSc.animator;
|
||||
|
||||
public virtual void OnAnimatorMove()
|
||||
|
||||
protected virtual void OnAnimatorMove()
|
||||
{
|
||||
if (owner.animationSc.isDuringRootMotion)
|
||||
{
|
||||
@@ -44,6 +45,7 @@ namespace Cielonos.MainGame.Characters
|
||||
characterTransform.rotation *= originalDeltaRotation;
|
||||
|
||||
Vector3 originalDeltaPosition = animator.deltaPosition;
|
||||
|
||||
Vector3 localDeltaPosition = characterTransform.InverseTransformDirection(originalDeltaPosition);
|
||||
Vector3 adjustedLocalDeltaPosition = new Vector3(localDeltaPosition.x * rootMotionMoveXMultiplier, localDeltaPosition.y,
|
||||
localDeltaPosition.z * rootMotionMoveZMultiplier);
|
||||
|
||||
Reference in New Issue
Block a user