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);
}
}