Merge remote-tracking branch 'origin/Luo'
This commit is contained in:
BIN
Assets/DC/场景01/女巫/女巫扔幽灵.fbx
Normal file
BIN
Assets/DC/场景01/女巫/女巫扔幽灵.fbx
Normal file
Binary file not shown.
138
Assets/DC/场景01/女巫/女巫扔幽灵.fbx.meta
Normal file
138
Assets/DC/场景01/女巫/女巫扔幽灵.fbx.meta
Normal file
@ -0,0 +1,138 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c7089232fc29b014f970636baafa5e8f
|
||||
ModelImporter:
|
||||
serializedVersion: 22200
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
materials:
|
||||
materialImportMode: 2
|
||||
materialName: 0
|
||||
materialSearch: 1
|
||||
materialLocation: 1
|
||||
animations:
|
||||
legacyGenerateAnimations: 4
|
||||
bakeSimulation: 0
|
||||
resampleCurves: 1
|
||||
optimizeGameObjects: 0
|
||||
removeConstantScaleCurves: 0
|
||||
motionNodeName:
|
||||
rigImportErrors:
|
||||
rigImportWarnings:
|
||||
animationImportErrors:
|
||||
animationImportWarnings:
|
||||
animationRetargetingWarnings:
|
||||
animationDoRetargetingWarnings: 0
|
||||
importAnimatedCustomProperties: 0
|
||||
importConstraints: 0
|
||||
animationCompression: 1
|
||||
animationRotationError: 0.5
|
||||
animationPositionError: 0.5
|
||||
animationScaleError: 0.5
|
||||
animationWrapMode: 0
|
||||
extraExposedTransformPaths: []
|
||||
extraUserProperties: []
|
||||
clipAnimations:
|
||||
- serializedVersion: 16
|
||||
name: "\u6254\u5E7D\u7075"
|
||||
takeName: Take 001
|
||||
internalID: 1827226128182048838
|
||||
firstFrame: 0
|
||||
lastFrame: 100
|
||||
wrapMode: 0
|
||||
orientationOffsetY: 0
|
||||
level: 0
|
||||
cycleOffset: 0
|
||||
loop: 0
|
||||
hasAdditiveReferencePose: 0
|
||||
loopTime: 1
|
||||
loopBlend: 0
|
||||
loopBlendOrientation: 0
|
||||
loopBlendPositionY: 0
|
||||
loopBlendPositionXZ: 0
|
||||
keepOriginalOrientation: 0
|
||||
keepOriginalPositionY: 1
|
||||
keepOriginalPositionXZ: 0
|
||||
heightFromFeet: 0
|
||||
mirror: 0
|
||||
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
|
||||
curves: []
|
||||
events: []
|
||||
transformMask: []
|
||||
maskType: 3
|
||||
maskSource: {instanceID: 0}
|
||||
additiveReferencePoseFrame: 0
|
||||
isReadable: 0
|
||||
meshes:
|
||||
lODScreenPercentages: []
|
||||
globalScale: 1
|
||||
meshCompression: 0
|
||||
addColliders: 0
|
||||
useSRGBMaterialColor: 1
|
||||
sortHierarchyByName: 1
|
||||
importPhysicalCameras: 1
|
||||
importVisibility: 1
|
||||
importBlendShapes: 1
|
||||
importCameras: 1
|
||||
importLights: 1
|
||||
nodeNameCollisionStrategy: 1
|
||||
fileIdsGeneration: 2
|
||||
swapUVChannels: 0
|
||||
generateSecondaryUV: 0
|
||||
useFileUnits: 1
|
||||
keepQuads: 0
|
||||
weldVertices: 1
|
||||
bakeAxisConversion: 0
|
||||
preserveHierarchy: 0
|
||||
skinWeightsMode: 0
|
||||
maxBonesPerVertex: 4
|
||||
minBoneWeight: 0.001
|
||||
optimizeBones: 1
|
||||
meshOptimizationFlags: -1
|
||||
indexFormat: 0
|
||||
secondaryUVAngleDistortion: 8
|
||||
secondaryUVAreaDistortion: 15.000001
|
||||
secondaryUVHardAngle: 88
|
||||
secondaryUVMarginMethod: 1
|
||||
secondaryUVMinLightmapResolution: 40
|
||||
secondaryUVMinObjectScale: 1
|
||||
secondaryUVPackMargin: 4
|
||||
useFileScale: 1
|
||||
strictVertexDataChecks: 0
|
||||
tangentSpace:
|
||||
normalSmoothAngle: 60
|
||||
normalImportMode: 0
|
||||
tangentImportMode: 3
|
||||
normalCalculationMode: 4
|
||||
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
||||
blendShapeNormalImportMode: 1
|
||||
normalSmoothingSource: 0
|
||||
referencedClips: []
|
||||
importAnimation: 1
|
||||
humanDescription:
|
||||
serializedVersion: 3
|
||||
human: []
|
||||
skeleton: []
|
||||
armTwist: 0.5
|
||||
foreArmTwist: 0.5
|
||||
upperLegTwist: 0.5
|
||||
legTwist: 0.5
|
||||
armStretch: 0.05
|
||||
legStretch: 0.05
|
||||
feetSpacing: 0
|
||||
globalScale: 1
|
||||
rootMotionBoneName:
|
||||
hasTranslationDoF: 0
|
||||
hasExtraRoot: 0
|
||||
skeletonHasParents: 1
|
||||
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
||||
autoGenerateAvatarMappingIfUnspecified: 1
|
||||
animationType: 2
|
||||
humanoidOversampling: 1
|
||||
avatarSetup: 0
|
||||
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
||||
importBlendShapeDeformPercent: 1
|
||||
remapMaterialsIfMaterialImportModeIsNone: 0
|
||||
additionalBone: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -105,10 +105,10 @@ AnimatorStateMachine:
|
||||
m_ChildStates:
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 2841690997665387767}
|
||||
m_Position: {x: 450, y: 290, z: 0}
|
||||
m_Position: {x: 390, y: 370, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: -9039481108547387752}
|
||||
m_Position: {x: 762.47046, y: 353.65445, z: 0}
|
||||
m_Position: {x: 690, y: 410, z: 0}
|
||||
m_ChildStateMachines: []
|
||||
m_AnyStateTransitions: []
|
||||
m_EntryTransitions: []
|
||||
|
||||
@ -1,5 +1,27 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1101 &-9219469375051992505
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions: []
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 7820496553238198887}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.94
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1107 &-7501048581804035218
|
||||
AnimatorStateMachine:
|
||||
serializedVersion: 6
|
||||
@ -11,10 +33,13 @@ AnimatorStateMachine:
|
||||
m_ChildStates:
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: -4661813889618432727}
|
||||
m_Position: {x: 260, y: 400, z: 0}
|
||||
m_Position: {x: 80, y: 450, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 7820496553238198887}
|
||||
m_Position: {x: 260, y: 240, z: 0}
|
||||
- serializedVersion: 1
|
||||
m_State: {fileID: 1069791650338107702}
|
||||
m_Position: {x: 460, y: 450, z: 0}
|
||||
m_ChildStateMachines: []
|
||||
m_AnyStateTransitions: []
|
||||
m_EntryTransitions: []
|
||||
@ -37,6 +62,7 @@ AnimatorState:
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 8977837539387090479}
|
||||
- {fileID: 4495544168063020523}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
@ -142,6 +168,85 @@ AnimatorController:
|
||||
m_IKPass: 0
|
||||
m_SyncedLayerAffectsTiming: 0
|
||||
m_Controller: {fileID: 9100000}
|
||||
--- !u!1102 &1069791650338107702
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: "\u6254\u5E7D\u7075"
|
||||
m_Speed: 1
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: 6536301934859382806}
|
||||
- {fileID: -9219469375051992505}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
m_WriteDefaultValues: 1
|
||||
m_Mirror: 0
|
||||
m_SpeedParameterActive: 0
|
||||
m_MirrorParameterActive: 0
|
||||
m_CycleOffsetParameterActive: 0
|
||||
m_TimeParameterActive: 0
|
||||
m_Motion: {fileID: 1827226128182048838, guid: c7089232fc29b014f970636baafa5e8f,
|
||||
type: 3}
|
||||
m_Tag:
|
||||
m_SpeedParameter:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1101 &4495544168063020523
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: Summon
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 1069791650338107702}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.75
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &6536301934859382806
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: Throw
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: -4661813889618432727}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.94
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1102 &7820496553238198887
|
||||
AnimatorState:
|
||||
serializedVersion: 6
|
||||
@ -154,6 +259,7 @@ AnimatorState:
|
||||
m_CycleOffset: 0
|
||||
m_Transitions:
|
||||
- {fileID: -3457870087006147639}
|
||||
- {fileID: 8595878504398405683}
|
||||
m_StateMachineBehaviours: []
|
||||
m_Position: {x: 50, y: 50, z: 0}
|
||||
m_IKOnFeet: 0
|
||||
@ -170,7 +276,7 @@ AnimatorState:
|
||||
m_MirrorParameter:
|
||||
m_CycleOffsetParameter:
|
||||
m_TimeParameter:
|
||||
--- !u!1101 &8977837539387090479
|
||||
--- !u!1101 &8595878504398405683
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@ -179,9 +285,31 @@ AnimatorStateTransition:
|
||||
m_Name:
|
||||
m_Conditions:
|
||||
- m_ConditionMode: 1
|
||||
m_ConditionEvent: Idle
|
||||
m_ConditionEvent: Summon
|
||||
m_EventTreshold: 0
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 1069791650338107702}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
m_IsExit: 0
|
||||
serializedVersion: 3
|
||||
m_TransitionDuration: 0.25
|
||||
m_TransitionOffset: 0
|
||||
m_ExitTime: 0.9
|
||||
m_HasExitTime: 1
|
||||
m_HasFixedDuration: 1
|
||||
m_InterruptionSource: 0
|
||||
m_OrderedInterruption: 1
|
||||
m_CanTransitionToSelf: 1
|
||||
--- !u!1101 &8977837539387090479
|
||||
AnimatorStateTransition:
|
||||
m_ObjectHideFlags: 1
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name:
|
||||
m_Conditions: []
|
||||
m_DstStateMachine: {fileID: 0}
|
||||
m_DstState: {fileID: 7820496553238198887}
|
||||
m_Solo: 0
|
||||
m_Mute: 0
|
||||
|
||||
@ -288482,8 +288482,8 @@ MonoBehaviour:
|
||||
swordAttachPoint: {fileID: 0}
|
||||
poisonApplePrefab: {fileID: 6932340588733953491, guid: 08c07a1efc6272a4e9c2dc8e60cb5aff,
|
||||
type: 3}
|
||||
targetAppleCount: 2
|
||||
appleSpawnInterval: 1.5
|
||||
targetAppleCount: 30
|
||||
appleSpawnInterval: 4
|
||||
ghostPrefab: {fileID: 1012488050875606214, guid: d2133e78601c21643b85faf7ac37ff4b,
|
||||
type: 3}
|
||||
ghostSpawnInterval: 15
|
||||
|
||||
@ -666,32 +666,8 @@ namespace SpiritSystem
|
||||
Vector3 targetPos = playerHead.position
|
||||
+ playerForward * introDistance
|
||||
+ Vector3.up * introHeight;
|
||||
|
||||
|
||||
// 仅在苹果场景中检查目标位置是否在玩家面前160度内
|
||||
if (isInAppleScene)
|
||||
{
|
||||
Vector3 directionToTarget = (targetPos - playerHead.position).normalized;
|
||||
float angle = Vector3.Angle(playerForward, directionToTarget);
|
||||
|
||||
// 如果角度小于80度(即在玩家前方160度扇区内),则移动到玩家后方
|
||||
if (angle < 90f)
|
||||
{
|
||||
Debug.Log($"[SpiritController] 苹果场景:目标位置在玩家面前160度内 (角度: {angle:F1}),重新定位到后方");
|
||||
// 使用后方方向(180度旋转)
|
||||
Vector3 playerBackward = -playerForward;
|
||||
targetPos = playerHead.position
|
||||
+ playerBackward * introDistance
|
||||
+ Vector3.up * introHeight;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log($"[SpiritController] 苹果场景:目标位置在玩家后方 (角度: {angle:F1})");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log($"[SpiritController] 非苹果场景:保持原位置");
|
||||
}
|
||||
|
||||
Debug.Log($"[SpiritController] 目标位置: {targetPos}, 起始位置: {transform.position}");
|
||||
|
||||
@ -768,7 +744,16 @@ namespace SpiritSystem
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 播放跳舞动画 - 移到正前方并跳舞
|
||||
/// 保持在当前位置不动(不跟随玩家)
|
||||
/// </summary>
|
||||
public void StayAtCurrentPosition()
|
||||
{
|
||||
SetState(SpiritState.StayInFront);
|
||||
Debug.Log("[SpiritController] 保持在当前位置不移动");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 播放跳舞动画 - 移到正前方并跳舞,动画结束后飞回固定位置
|
||||
/// </summary>
|
||||
public void PlayDance(Action onComplete = null)
|
||||
{
|
||||
@ -782,6 +767,9 @@ namespace SpiritSystem
|
||||
{
|
||||
if (playerHead == null) yield break;
|
||||
|
||||
// 记录当前固定位置
|
||||
Vector3 fixedPosition = transform.position;
|
||||
|
||||
// 飞到正前方
|
||||
Vector3 playerForward = playerHead.forward;
|
||||
Vector3 targetPos = playerHead.position
|
||||
@ -808,10 +796,39 @@ namespace SpiritSystem
|
||||
ReturnToFollow();
|
||||
// 通知外部完成
|
||||
onComplete?.Invoke();
|
||||
|
||||
// 跳舞动画播放完成后,飞回固定位置
|
||||
yield return new WaitForSeconds(2f); // 等待跳舞动画持续约2秒
|
||||
|
||||
// 飞回固定位置
|
||||
yield return FlyToFixedPosition(fixedPosition);
|
||||
|
||||
// 回到固定不移动状态
|
||||
SetState(SpiritState.StayInFront);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 播放沮丧动画 - 移到正前方并沮丧
|
||||
/// 飞回固定位置
|
||||
/// </summary>
|
||||
private IEnumerator FlyToFixedPosition(Vector3 fixedPosition)
|
||||
{
|
||||
float t = 0;
|
||||
Vector3 startPos = transform.position;
|
||||
float duration = 0.5f;
|
||||
|
||||
while (t < 1f)
|
||||
{
|
||||
t += Time.deltaTime / duration;
|
||||
float smoothT = Mathf.SmoothStep(0, 1, t);
|
||||
transform.position = Vector3.Lerp(startPos, fixedPosition, smoothT);
|
||||
yield return null;
|
||||
}
|
||||
|
||||
transform.position = fixedPosition;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 播放沮丧动画 - 移到正前方并沮丧,动画结束后飞回固定位置
|
||||
/// </summary>
|
||||
public void PlaySad(Action onComplete = null)
|
||||
{
|
||||
@ -825,6 +842,9 @@ namespace SpiritSystem
|
||||
{
|
||||
if (playerHead == null) yield break;
|
||||
|
||||
// 记录当前固定位置
|
||||
Vector3 fixedPosition = transform.position;
|
||||
|
||||
// 飞到正前方
|
||||
Vector3 playerForward = playerHead.forward;
|
||||
Vector3 targetPos = playerHead.position
|
||||
@ -851,6 +871,15 @@ namespace SpiritSystem
|
||||
ReturnToFollow();
|
||||
// 通知外部完成
|
||||
onComplete?.Invoke();
|
||||
|
||||
// 沮丧动画播放完成后,飞回固定位置
|
||||
yield return new WaitForSeconds(2f); // 等待沮丧动画持续约2秒
|
||||
|
||||
// 飞回固定位置
|
||||
yield return FlyToFixedPosition(fixedPosition);
|
||||
|
||||
// 回到固定不移动状态
|
||||
SetState(SpiritState.StayInFront);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@ -194,10 +194,10 @@ public class DreamAppleEvent : CutsceneBase
|
||||
|
||||
yield return new WaitForSeconds(2f); // 等待女巫生成动画
|
||||
|
||||
// 女巫出现后,小精灵回到跟随模式
|
||||
// 女巫出现后,小精灵保持在当前位置不移动
|
||||
if (spirit != null)
|
||||
{
|
||||
spirit.ReturnToFollow();
|
||||
spirit.StayAtCurrentPosition();
|
||||
}
|
||||
|
||||
// ========== 开始战斗 ==========
|
||||
@ -391,6 +391,13 @@ public class DreamAppleEvent : CutsceneBase
|
||||
if (debugMode)
|
||||
Debug.Log($"[DreamAppleEvent] 苹果被切开!进度: {slicedAppleCount}/{targetAppleCount}");
|
||||
|
||||
// 播放小精灵跳舞动画
|
||||
var spirit = SpiritSystem.SpiritController.Instance;
|
||||
if (spirit != null && currentState == DreamEventState.Battle)
|
||||
{
|
||||
spirit.PlayDance();
|
||||
}
|
||||
|
||||
// 更新UI
|
||||
UpdateBattleUI();
|
||||
|
||||
@ -410,6 +417,13 @@ public class DreamAppleEvent : CutsceneBase
|
||||
|
||||
if (debugMode)
|
||||
Debug.Log($"[DreamAppleEvent] 苹果未击中!已错过: {missedAppleCount}");
|
||||
|
||||
// // 播放小精灵沮丧动画
|
||||
// var spirit = SpiritSystem.SpiritController.Instance;
|
||||
// if (spirit != null && currentState == DreamEventState.Battle)
|
||||
// {
|
||||
// spirit.PlaySad();
|
||||
// }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user