diff --git a/Assets/Resources/Games/chameleon.prefab b/Assets/Resources/Games/chameleon.prefab index 9c1039217..4b6fbcd9d 100644 --- a/Assets/Resources/Games/chameleon.prefab +++ b/Assets/Resources/Games/chameleon.prefab @@ -1316,90 +1316,6 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 ---- !u!1 &2671326294020303789 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8411741261202548534} - - component: {fileID: 3347665118137351440} - m_Layer: 0 - m_Name: Circle - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8411741261202548534 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2671326294020303789} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 1.5, y: -0.25, z: 0} - m_LocalScale: {x: 1.5, y: 1.5, z: 1.5} - m_ConstrainProportionsScale: 1 - m_Children: [] - m_Father: {fileID: 5813499711186931250} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!212 &3347665118137351440 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2671326294020303789} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 0 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_FlipX: 0 - m_FlipY: 0 - m_DrawMode: 0 - m_Size: {x: 1, y: 1} - m_AdaptiveModeThreshold: 0.5 - m_SpriteTileMode: 0 - m_WasSpriteAssigned: 1 - m_MaskInteraction: 0 - m_SpriteSortPoint: 0 --- !u!1 &2698380409090072979 GameObject: m_ObjectHideFlags: 0 @@ -1424,7 +1340,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2698380409090072979} - m_LocalRotation: {x: -0, y: 0, z: 0.13052616, w: 0.99144495} + m_LocalRotation: {x: 0, y: 0, z: 0.13052616, w: 0.9914449} m_LocalPosition: {x: -0.135, y: 0.10999999, z: 0} m_LocalScale: {x: 1.0000001, y: 1.0000001, z: 1} m_ConstrainProportionsScale: 0 @@ -3054,7 +2970,6 @@ Transform: - {fileID: 2619828408818896828} - {fileID: 4474597943635544359} - {fileID: 1483397584454175980} - - {fileID: 8411741261202548534} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -3449,8 +3364,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: startBeat: 0 - flyType: 0 + lengthBeat: 0 flyAnim: {fileID: 6799900630987709906} + wingAnim: {fileID: 4509423242586505778} --- !u!95 &6799900630987709906 Animator: serializedVersion: 5 diff --git a/Assets/Resources/Sprites/Editor/GameIcons/chameleon.png b/Assets/Resources/Sprites/Editor/GameIcons/chameleon.png new file mode 100644 index 000000000..d1cf589b6 Binary files /dev/null and b/Assets/Resources/Sprites/Editor/GameIcons/chameleon.png differ diff --git a/Assets/Resources/Sprites/Editor/GameIcons/chameleon.png.meta b/Assets/Resources/Sprites/Editor/GameIcons/chameleon.png.meta new file mode 100644 index 000000000..c4448ca15 --- /dev/null +++ b/Assets/Resources/Sprites/Editor/GameIcons/chameleon.png.meta @@ -0,0 +1,123 @@ +fileFormatVersion: 2 +guid: bbf1cea897518fe41ac7241472e96a8d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 256 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Sprites/Games/Chameleon/Animations/Fly.controller b/Assets/Resources/Sprites/Games/Chameleon/Animations/Fly.controller index c478f5fbf..2d369bbd6 100644 --- a/Assets/Resources/Sprites/Games/Chameleon/Animations/Fly.controller +++ b/Assets/Resources/Sprites/Games/Chameleon/Animations/Fly.controller @@ -78,58 +78,6 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: ---- !u!1102 &-6711584185864509779 -AnimatorState: - serializedVersion: 6 - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: moveLoopClose - m_Speed: 1 - m_CycleOffset: 0 - m_Transitions: [] - 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: 7400000, guid: 078804f896f79324fa7c793f8dbc4b31, type: 2} - m_Tag: - m_SpeedParameter: - m_MirrorParameter: - m_CycleOffsetParameter: - m_TimeParameter: ---- !u!1102 &-6696898983186624443 -AnimatorState: - serializedVersion: 6 - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: fly - m_Speed: 1 - m_CycleOffset: 0 - m_Transitions: [] - 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: 7400000, guid: 74aa2d71e2a7a294aa020957525d7817, type: 2} - m_Tag: - m_SpeedParameter: - m_MirrorParameter: - m_CycleOffsetParameter: - m_TimeParameter: --- !u!1102 &-5922147104933799174 AnimatorState: serializedVersion: 6 @@ -167,19 +115,7 @@ AnimatorController: m_AnimatorParameters: [] m_AnimatorLayers: - serializedVersion: 5 - m_Name: Wing Layer - m_StateMachine: {fileID: 7264832967013319914} - m_Mask: {fileID: 0} - m_Motions: [] - m_Behaviours: [] - m_BlendingMode: 0 - m_SyncedLayerIndex: -1 - m_DefaultWeight: 1 - m_IKPass: 0 - m_SyncedLayerAffectsTiming: 0 - m_Controller: {fileID: 9100000} - - serializedVersion: 5 - m_Name: Move Layer + m_Name: Base Layer m_StateMachine: {fileID: 5269894196936690212} m_Mask: {fileID: 0} m_Motions: [] @@ -190,14 +126,14 @@ AnimatorController: m_IKPass: 0 m_SyncedLayerAffectsTiming: 0 m_Controller: {fileID: 9100000} ---- !u!1102 &411134394842004055 +--- !u!1102 &1004444980128489754 AnimatorState: serializedVersion: 6 m_ObjectHideFlags: 1 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: idle + m_Name: moveEndFar m_Speed: 1 m_CycleOffset: 0 m_Transitions: [] @@ -210,7 +146,7 @@ AnimatorState: m_MirrorParameterActive: 0 m_CycleOffsetParameterActive: 0 m_TimeParameterActive: 0 - m_Motion: {fileID: 0} + m_Motion: {fileID: 7400000, guid: 2a29ba9845aef114f8b23ab662fda406, type: 2} m_Tag: m_SpeedParameter: m_MirrorParameter: @@ -353,7 +289,7 @@ AnimatorStateMachine: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Move Layer + m_Name: Base Layer m_ChildStates: - serializedVersion: 1 m_State: {fileID: 1444428680978530896} @@ -382,12 +318,12 @@ AnimatorStateMachine: - serializedVersion: 1 m_State: {fileID: -5922147104933799174} m_Position: {x: 430, y: 0, z: 0} - - serializedVersion: 1 - m_State: {fileID: -6711584185864509779} - m_Position: {x: 650, y: 20, z: 0} - serializedVersion: 1 m_State: {fileID: 3574830805167585039} - m_Position: {x: 640, y: -40, z: 0} + m_Position: {x: 430, y: -50, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1004444980128489754} + m_Position: {x: 210, y: -50, z: 0} m_ChildStateMachines: [] m_AnyStateTransitions: [] m_EntryTransitions: [] @@ -424,28 +360,3 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: ---- !u!1107 &7264832967013319914 -AnimatorStateMachine: - serializedVersion: 6 - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Wing Layer - m_ChildStates: - - serializedVersion: 1 - m_State: {fileID: -6696898983186624443} - m_Position: {x: 260, y: 110, z: 0} - - serializedVersion: 1 - m_State: {fileID: 411134394842004055} - m_Position: {x: 250, y: 10, z: 0} - m_ChildStateMachines: [] - m_AnyStateTransitions: [] - m_EntryTransitions: [] - m_StateMachineTransitions: {} - m_StateMachineBehaviours: [] - m_AnyStatePosition: {x: 50, y: 20, z: 0} - m_EntryPosition: {x: 50, y: 120, z: 0} - m_ExitPosition: {x: 800, y: 120, z: 0} - m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} - m_DefaultState: {fileID: -6696898983186624443} diff --git a/Assets/Resources/Sprites/Games/Chameleon/Animations/Wing.controller b/Assets/Resources/Sprites/Games/Chameleon/Animations/Wing.controller index 7b8e37dbf..7d9843f98 100644 --- a/Assets/Resources/Sprites/Games/Chameleon/Animations/Wing.controller +++ b/Assets/Resources/Sprites/Games/Chameleon/Animations/Wing.controller @@ -12,6 +12,9 @@ AnimatorStateMachine: - serializedVersion: 1 m_State: {fileID: -1179836612212821551} m_Position: {x: 200, y: 0, z: 0} + - serializedVersion: 1 + m_State: {fileID: 8241254822964275247} + m_Position: {x: 240, y: 60, z: 0} m_ChildStateMachines: [] m_AnyStateTransitions: [] m_EntryTransitions: [] @@ -70,3 +73,29 @@ AnimatorController: m_IKPass: 0 m_SyncedLayerAffectsTiming: 0 m_Controller: {fileID: 9100000} +--- !u!1102 &8241254822964275247 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: idle + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + 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: 0} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: diff --git a/Assets/Resources/Sprites/Games/Chameleon/Animations/flyCloseMoveEnd.anim b/Assets/Resources/Sprites/Games/Chameleon/Animations/flyCloseMoveEnd.anim index 548acf1bb..65cd9ce06 100644 --- a/Assets/Resources/Sprites/Games/Chameleon/Animations/flyCloseMoveEnd.anim +++ b/Assets/Resources/Sprites/Games/Chameleon/Animations/flyCloseMoveEnd.anim @@ -14,7 +14,23 @@ AnimationClip: m_RotationCurves: [] m_CompressedRotationCurves: [] m_EulerCurves: [] - m_PositionCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 1.5, y: -0.25, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: m_ScaleCurves: [] m_FloatCurves: [] m_PPtrCurves: [] @@ -24,14 +40,21 @@ AnimationClip: m_Center: {x: 0, y: 0, z: 0} m_Extent: {x: 0, y: 0, z: 0} m_ClipBindingConstant: - genericBindings: [] + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 pptrCurveMapping: [] m_AnimationClipSettings: serializedVersion: 2 m_AdditiveReferencePoseClip: {fileID: 0} m_AdditiveReferencePoseTime: 0 m_StartTime: 0 - m_StopTime: 1 + m_StopTime: 0 m_OrientationOffsetY: 0 m_Level: 0 m_CycleOffset: 0 @@ -46,8 +69,65 @@ AnimationClip: m_KeepOriginalPositionXZ: 0 m_HeightFromFeet: 0 m_Mirror: 0 - m_EditorCurves: [] + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1.5 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.25 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} m_EulerEditorCurves: [] - m_HasGenericRootTransform: 0 + m_HasGenericRootTransform: 1 m_HasMotionFloatCurves: 0 m_Events: [] diff --git a/Assets/Resources/Sprites/Games/Chameleon/Animations/flyFarFall.anim b/Assets/Resources/Sprites/Games/Chameleon/Animations/flyFarFall.anim index 616bcfef4..a74e3cbfb 100644 --- a/Assets/Resources/Sprites/Games/Chameleon/Animations/flyFarFall.anim +++ b/Assets/Resources/Sprites/Games/Chameleon/Animations/flyFarFall.anim @@ -248,7 +248,7 @@ AnimationClip: m_Level: 0 m_CycleOffset: 0 m_HasAdditiveReferencePose: 0 - m_LoopTime: 1 + m_LoopTime: 0 m_LoopBlend: 0 m_LoopBlendOrientation: 0 m_LoopBlendPositionY: 0 diff --git a/Assets/Resources/Sprites/Games/Chameleon/Animations/flyFarMoveEnd.anim b/Assets/Resources/Sprites/Games/Chameleon/Animations/flyFarMoveEnd.anim index a8e00ef7a..8e506cf8f 100644 --- a/Assets/Resources/Sprites/Games/Chameleon/Animations/flyFarMoveEnd.anim +++ b/Assets/Resources/Sprites/Games/Chameleon/Animations/flyFarMoveEnd.anim @@ -14,24 +14,47 @@ AnimationClip: m_RotationCurves: [] m_CompressedRotationCurves: [] m_EulerCurves: [] - m_PositionCurves: [] + m_PositionCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: {x: 5.15, y: 1.6, z: 0} + inSlope: {x: 0, y: 0, z: 0} + outSlope: {x: 0, y: 0, z: 0} + tangentMode: 0 + weightedMode: 0 + inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + path: m_ScaleCurves: [] m_FloatCurves: [] m_PPtrCurves: [] - m_SampleRate: 60 + m_SampleRate: 30 m_WrapMode: 0 m_Bounds: m_Center: {x: 0, y: 0, z: 0} m_Extent: {x: 0, y: 0, z: 0} m_ClipBindingConstant: - genericBindings: [] + genericBindings: + - serializedVersion: 2 + path: 0 + attribute: 1 + script: {fileID: 0} + typeID: 4 + customType: 0 + isPPtrCurve: 0 pptrCurveMapping: [] m_AnimationClipSettings: serializedVersion: 2 m_AdditiveReferencePoseClip: {fileID: 0} m_AdditiveReferencePoseTime: 0 m_StartTime: 0 - m_StopTime: 1 + m_StopTime: 0 m_OrientationOffsetY: 0 m_Level: 0 m_CycleOffset: 0 @@ -46,8 +69,65 @@ AnimationClip: m_KeepOriginalPositionXZ: 0 m_HeightFromFeet: 0 m_Mirror: 0 - m_EditorCurves: [] + m_EditorCurves: + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 5.15 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.x + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1.6 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.y + path: + classID: 4 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 136 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: m_LocalPosition.z + path: + classID: 4 + script: {fileID: 0} m_EulerEditorCurves: [] - m_HasGenericRootTransform: 0 + m_HasGenericRootTransform: 1 m_HasMotionFloatCurves: 0 m_Events: [] diff --git a/Assets/Scripts/Games/Chameleon/Chameleon.cs b/Assets/Scripts/Games/Chameleon/Chameleon.cs index 2dcc04494..6eb7fadda 100644 --- a/Assets/Scripts/Games/Chameleon/Chameleon.cs +++ b/Assets/Scripts/Games/Chameleon/Chameleon.cs @@ -22,10 +22,11 @@ namespace HeavenStudio.Games.Loaders { preFunction = delegate { var e = eventCaller.currentEntity; - Chameleon.PreSpawnFly(e.beat, 7, (int)Scripts_Chameleon.FlyType.Far); + Chameleon.PreSpawnFly(e.beat, e.length - 4, (int)Scripts_Chameleon.FlyType.Far); if (e["countIn"]) Chameleon.CountIn(e.beat); }, defaultLength = 8f, + resizable = true, parameters = new List() { new Param("countIn", false, "Count-In"), @@ -35,10 +36,11 @@ namespace HeavenStudio.Games.Loaders { preFunction = delegate { var e = eventCaller.currentEntity; - Chameleon.PreSpawnFly(e.beat, 7, (int)Scripts_Chameleon.FlyType.Close); + Chameleon.PreSpawnFly(e.beat, e.length - 4, (int)Scripts_Chameleon.FlyType.Close); if (e["countIn"]) Chameleon.CountIn(e.beat); }, defaultLength = 8f, + resizable = true, parameters = new List() { new Param("countIn", false, "Count-In"), @@ -207,13 +209,21 @@ namespace HeavenStudio.Games moveEyeTime = 0; if (currentFly is not null) { - if (cond.songPositionInBeatsAsDouble >= currentFly.startBeat) + if (cond.songPositionInBeatsAsDouble >= currentFly.startBeat + 1) { Vector3 relative = currentFly.gameObject.transform.InverseTransformPoint(chameleonEye.transform.position); float currentAngle = chameleonEye.eulerAngles.z; currentAngle = currentAngle > 180 ? currentAngle - 360 : currentAngle; float nextAngle = 165 + Mathf.Atan2(relative.y, relative.x) * Mathf.Rad2Deg; nextAngle = nextAngle > 180 ? nextAngle - 360 : nextAngle; + if (currentFly.isFall) + { + nextAngle = currentFly.flyType switch { + FlyType.Far => (nextAngle < -70) ? -70 : nextAngle, + FlyType.Close => (nextAngle < -100) ? -100 : nextAngle, + _ => throw new System.NotImplementedException() + }; + } float angle = Mathf.Lerp(currentAngle, nextAngle, 0.05f); chameleonEye.eulerAngles = new Vector3(0, 0, angle); } @@ -250,8 +260,10 @@ namespace HeavenStudio.Games public void SpawnFly(double beat, double length, int type) { + if (length <= 0) length = 4; var newFly = Instantiate(baseFly, transform).GetComponent(); newFly.startBeat = beat; + newFly.lengthBeat = length; newFly.flyType = (FlyType)type; BeatAction.New(instance, new List() diff --git a/Assets/Scripts/Games/Chameleon/Fly.cs b/Assets/Scripts/Games/Chameleon/Fly.cs index 65cbe573e..02efe94a6 100644 --- a/Assets/Scripts/Games/Chameleon/Fly.cs +++ b/Assets/Scripts/Games/Chameleon/Fly.cs @@ -15,15 +15,17 @@ namespace HeavenStudio.Games.Scripts_Chameleon public class Fly : MonoBehaviour { - public double startBeat; + public double startBeat, lengthBeat; private double currentBeat; - public FlyType flyType; + [System.NonSerialized] public FlyType flyType; [SerializeField] private Animator flyAnim, wingAnim; + public bool isFall { get; private set; } private Sound loopSound; - + float randomAngle = 0; Vector2 moveCurrentPos, moveNextPos, moveEndPos; + bool moveFast; private Chameleon game; @@ -50,15 +52,17 @@ namespace HeavenStudio.Games.Scripts_Chameleon FlyType.Close => new Vector2(1.5f, -0.25f), _ => throw new System.NotImplementedException() }; + randomAngle = UnityEngine.Random.Range(0, 2 * Mathf.PI); + moveNextPos = new Vector2(Mathf.Cos(randomAngle), Mathf.Sin(randomAngle)) + moveEndPos; currentBeat = startBeat; loopSound = SoundByte.PlayOneShotGame("chameleon/fly" + typePrefix + "Loop", -1, 1, 1, true); MultiSound.Play( new MultiSound.Sound[] { - new MultiSound.Sound("chameleon/fly" + typePrefix + "1", startBeat + 4), - new MultiSound.Sound("chameleon/fly" + typePrefix + "2", startBeat + 5), - new MultiSound.Sound("chameleon/fly" + typePrefix + "3", startBeat + 6), + new MultiSound.Sound("chameleon/fly" + typePrefix + "1", startBeat + lengthBeat), + new MultiSound.Sound("chameleon/fly" + typePrefix + "2", startBeat + lengthBeat + 1), + new MultiSound.Sound("chameleon/fly" + typePrefix + "3", startBeat + lengthBeat + 2), } ); @@ -69,10 +73,10 @@ namespace HeavenStudio.Games.Scripts_Chameleon // var currentBeat = Conductor.instance.songPositionInBeatsAsDouble; // flyAnim.DoScaledAnimationAsync("move" + typePrefix, 0.5f, (float)((currentBeat - startBeat)/8)); // }), - new BeatAction.Action(startBeat + 4, delegate { + new BeatAction.Action(startBeat + lengthBeat, delegate { loopSoundRelease(); }), - new BeatAction.Action(startBeat + 7, delegate { + new BeatAction.Action(startBeat + lengthBeat + 3, delegate { if (!flyAnim.enabled) { flyAnim.enabled = true; @@ -87,11 +91,11 @@ namespace HeavenStudio.Games.Scripts_Chameleon FlyType.Close => Chameleon.InputAction_Close, _ => throw new System.NotImplementedException() }; - game.ScheduleInput(startBeat + 4, 3, InputAction, JustCatch, MissCatch, Empty); + game.ScheduleInput(startBeat + lengthBeat, 3, InputAction, JustCatch, MissCatch, Empty); BeatAction.New(this, new List() { - new BeatAction.Action(startBeat + 10, delegate { + new BeatAction.Action(startBeat + lengthBeat + 6, delegate { Destroy(); }), }); @@ -104,28 +108,30 @@ namespace HeavenStudio.Games.Scripts_Chameleon { if (!flyAnim.enabled) { - float normalizedBeat = Conductor.instance.GetPositionFromBeat(startBeat, 0.5, ignoreSwing: true); + float startBeatPosition = Conductor.instance.GetPositionFromBeat(startBeat, 2, ignoreSwing: true); - if (normalizedBeat <= 1) + if (startBeatPosition <= 1) { - transform.position = Vector2.Lerp(moveCurrentPos, moveEndPos, normalizedBeat); + startBeatPosition = (startBeatPosition < 0.5) ? 0 : startBeatPosition * 2 - 1; + transform.position = Vector2.Lerp(moveCurrentPos, moveNextPos, startBeatPosition); } else { - normalizedBeat = Conductor.instance.GetPositionFromBeat(currentBeat, 0.25, ignoreSwing: true); - if (normalizedBeat >= 1) + float currentBeatPosition = Conductor.instance.GetPositionFromBeat(currentBeat, moveFast ? 0.17: 0.5, ignoreSwing: true);; + if (currentBeatPosition > 1) { + if (startBeatPosition > 1.5) moveFast = true; + currentBeat = cond.songPositionInBeatsAsDouble; moveCurrentPos = moveNextPos; - randomAngle = randomAngle + UnityEngine.Random.Range(1f, 1.5f * Mathf.PI); - moveNextPos = new Vector2(Mathf.Cos(randomAngle), Mathf.Sin(randomAngle)) + moveEndPos; + randomAngle = randomAngle + UnityEngine.Random.Range(0.7f, 1.3f * Mathf.PI); + moveNextPos = (moveFast ? 0.5f : 1) * new Vector2(Mathf.Cos(randomAngle), Mathf.Sin(randomAngle)) + moveEndPos; } else { - float newPosX = EasingFunction.EaseInOutSine(moveCurrentPos.x, moveNextPos.x, normalizedBeat); - float newPosY = EasingFunction.EaseInOutSine(moveCurrentPos.y, moveNextPos.y, normalizedBeat); + float newPosX = EasingFunction.EaseInOutSine(moveCurrentPos.x, moveNextPos.x, currentBeatPosition); + float newPosY = EasingFunction.EaseInOutSine(moveCurrentPos.y, moveNextPos.y, currentBeatPosition); transform.position = new Vector2(newPosX, newPosY); - } } } @@ -144,17 +150,18 @@ namespace HeavenStudio.Games.Scripts_Chameleon game.chameleonAnim.DoScaledAnimationAsync("tongue" + typePrefix, 0.5f); if (state <= -1f || state >= 1f) { + isFall = true; flyAnim.DoScaledAnimationAsync("fall" + typePrefix, 0.5f); return; } game.currentFly = null; SoundByte.PlayOneShotGame("chameleon/eatCatch"); - SoundByte.PlayOneShotGame("chameleon/eatGulp", startBeat + 7.25); + SoundByte.PlayOneShotGame("chameleon/eatGulp", startBeat + lengthBeat + 3.25); wingAnim.Play("idle", 0, 0); flyAnim.DoScaledAnimationAsync("catch" + typePrefix, 0.5f); BeatAction.New(game, new List() { - new BeatAction.Action(startBeat + 7.25, delegate { + new BeatAction.Action(startBeat + lengthBeat + 3.25, delegate { game.chameleonAnim.DoScaledAnimationAsync("gurp", 0.5f); }), }); @@ -185,7 +192,7 @@ namespace HeavenStudio.Games.Scripts_Chameleon private void Destroy() { - game.currentFly = null; + if (game.currentFly == this) game.currentFly = null; Destroy(gameObject); } }