diff --git a/Assets/Scenes/CubeClash.unity b/Assets/Scenes/CubeClash.unity index e931356..71b28dd 100644 --- a/Assets/Scenes/CubeClash.unity +++ b/Assets/Scenes/CubeClash.unity @@ -273,7 +273,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!81 &10525130 AudioListener: m_ObjectHideFlags: 0 @@ -341,13 +341,13 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 10525129} serializedVersion: 2 - m_LocalRotation: {x: 0.38268343, y: 0, z: 0, w: 0.92387956} - m_LocalPosition: {x: 0, y: 6.05, z: -6.95} + m_LocalRotation: {x: 0.2835407, y: -0, z: -0, w: 0.9589602} + m_LocalPosition: {x: 0, y: 6.74, z: -8.02} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 45, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 32.943, y: 0, z: 0} --- !u!1 &43011353 GameObject: m_ObjectHideFlags: 0 @@ -424,6 +424,228 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 43011353} m_CullTransparentMesh: 1 +--- !u!1 &89338302 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 89338305} + - component: {fileID: 89338304} + - component: {fileID: 89338303} + m_Layer: 0 + m_Name: Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &89338303 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 89338302} + m_Enabled: 1 +--- !u!20 &89338304 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 89338302} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &89338305 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 89338302} + serializedVersion: 2 + m_LocalRotation: {x: 0.23609233, y: -0, z: -0, w: 0.97173065} + m_LocalPosition: {x: -0.11, y: 6.57, z: -9.06} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 27.312, y: 0, z: 0} +--- !u!1 &116858839 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 116858840} + - component: {fileID: 116858843} + - component: {fileID: 116858842} + - component: {fileID: 116858841} + m_Layer: 13 + m_Name: Arena + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &116858840 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 116858839} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.6174, z: 0} + m_LocalScale: {x: 4.3, y: 0.05, z: 4.3} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 532470427713242256} + - {fileID: 356688633347129428} + - {fileID: 7360795248132421064} + - {fileID: 4224945627643446171} + - {fileID: 3666476648658419757} + - {fileID: 2922681868323186435} + - {fileID: 7414517493221450233} + - {fileID: 9214848968164875920} + - {fileID: 2956791116693350937} + - {fileID: 5789961113561579327} + - {fileID: 4236156797413513937} + - {fileID: 2505050724753016314} + - {fileID: 6256841476678442506} + - {fileID: 9032149253964661708} + - {fileID: 2140874187475647762} + - {fileID: 2084494261253346963} + - {fileID: 2383939671322552595} + - {fileID: 844321564560861092} + - {fileID: 6821326103682323664} + - {fileID: 7534420039734603506} + - {fileID: 1500112412368486135} + - {fileID: 874144538759755420} + - {fileID: 4758945758014007562} + - {fileID: 3495244031271310325} + - {fileID: 7680789973231527251} + m_Father: {fileID: 1541236218} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &116858841 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 116858839} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 0 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &116858842 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 116858839} + m_Enabled: 0 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, 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: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &116858843 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 116858839} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1001 &160615288 PrefabInstance: m_ObjectHideFlags: 0 @@ -505,6 +727,67 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 5b481fa2e91b9954f835d931e7b636a5, type: 3} +--- !u!1001 &252440614 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: 6fdb8c21e69d57e40bb27bdb0bf37c66, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 6fdb8c21e69d57e40bb27bdb0bf37c66, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 6fdb8c21e69d57e40bb27bdb0bf37c66, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 6fdb8c21e69d57e40bb27bdb0bf37c66, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 6fdb8c21e69d57e40bb27bdb0bf37c66, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 6fdb8c21e69d57e40bb27bdb0bf37c66, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 6fdb8c21e69d57e40bb27bdb0bf37c66, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 6fdb8c21e69d57e40bb27bdb0bf37c66, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 6fdb8c21e69d57e40bb27bdb0bf37c66, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 6fdb8c21e69d57e40bb27bdb0bf37c66, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: 6fdb8c21e69d57e40bb27bdb0bf37c66, type: 3} + propertyPath: m_Name + value: CubeClash + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: 6fdb8c21e69d57e40bb27bdb0bf37c66, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 6fdb8c21e69d57e40bb27bdb0bf37c66, type: 3} --- !u!1 &263358717 GameObject: m_ObjectHideFlags: 0 @@ -664,7 +947,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 315248227} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -1.1741195, y: -5.824787, z: -4.268272} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -686,6 +969,98 @@ MonoBehaviour: arenaCube: {fileID: 1541236218} shrinkRate: 0.01 minSize: 0.4 +--- !u!1 &354225787 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 354225790} + - component: {fileID: 354225789} + - component: {fileID: 354225788} + m_Layer: 0 + m_Name: Main Camera (1) + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!81 &354225788 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 354225787} + m_Enabled: 1 +--- !u!20 &354225789 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 354225787} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &354225790 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 354225787} + serializedVersion: 2 + m_LocalRotation: {x: 0.38268343, y: 0, z: 0, w: 0.92387956} + m_LocalPosition: {x: 0, y: 6.05, z: -6.95} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 45, y: 0, z: 0} --- !u!1 &357203020 GameObject: m_ObjectHideFlags: 0 @@ -842,15 +1217,15 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalPosition.x - value: 0.001 + value: 0.0010000467 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalPosition.y - value: 0.7 + value: 0.6999998 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalPosition.z - value: 2.061 + value: 2.0610003 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalRotation.w @@ -858,7 +1233,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalRotation.x - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalRotation.y @@ -866,7 +1241,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalRotation.z - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -934,11 +1309,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 72a577870a520a9408488fa07f77d024, type: 3} m_Name: m_EditorClassIdentifier: - moveSpeed: 1 + moveSpeedRange: {x: 1.9, y: 2.1} + retargetSpeedJitter: 0.3 + moveSpeed: 2 decisionInterval: 1.5 bumpRange: 2.5 - roamRadius: 5 - arenaCube: {fileID: 1541236218} + roamRadius: 6.3 + arenaCube: {fileID: 116858840} --- !u!114 &393097497 MonoBehaviour: m_ObjectHideFlags: 0 @@ -952,15 +1329,18 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: isPlayerControlled: 0 - moveSpeed: 1 + moveSpeed: 2 joystick: {fileID: 0} - bumpDistance: 1 - bumpSpeed: 7.5 - returnSpeed: 7.5 - cooldown: 2 - knockbackForce: 50 - animator: {fileID: 0} + dashImpulse: 10 + hitWindow: 0.22 + bumpCooldown: 1 + momentumTransferScale: 1 + bonusKnockImpulse: 1 + selfMomentumLoss: 0.5 + pushStunTime: 0.25 + animator: {fileID: 393097502} isBumping: 0 + isHitActive: 0 --- !u!65 &393097498 BoxCollider: m_ObjectHideFlags: 0 @@ -1006,9 +1386,14 @@ Rigidbody: m_ImplicitTensor: 1 m_UseGravity: 1 m_IsKinematic: 0 - m_Interpolate: 0 + m_Interpolate: 1 m_Constraints: 80 - m_CollisionDetection: 2 + m_CollisionDetection: 1 +--- !u!95 &393097502 stripped +Animator: + m_CorrespondingSourceObject: {fileID: 2857789264212994300, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} + m_PrefabInstance: {fileID: 393097494} + m_PrefabAsset: {fileID: 0} --- !u!1 &913221583 GameObject: m_ObjectHideFlags: 0 @@ -1070,7 +1455,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 913221583} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -1269,11 +1654,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalPosition.x - value: -0.001 + value: -0.0010000467 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalPosition.y - value: 0.7 + value: 0.6999998 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalPosition.z @@ -1285,15 +1670,15 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalRotation.x - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalRotation.y - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalRotation.z - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -1539,9 +1924,9 @@ Rigidbody: m_ImplicitTensor: 1 m_UseGravity: 1 m_IsKinematic: 0 - m_Interpolate: 0 + m_Interpolate: 1 m_Constraints: 80 - m_CollisionDetection: 2 + m_CollisionDetection: 1 --- !u!114 &1138896300 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1555,15 +1940,23 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: isPlayerControlled: 1 - moveSpeed: 1 + moveSpeed: 2 joystick: {fileID: 2123218853} - bumpDistance: 1 - bumpSpeed: 7.5 - returnSpeed: 7.5 - cooldown: 2 - knockbackForce: 50 - animator: {fileID: 0} + dashImpulse: 10 + hitWindow: 0.22 + bumpCooldown: 1 + momentumTransferScale: 1 + bonusKnockImpulse: 1 + selfMomentumLoss: 0.5 + pushStunTime: 0.25 + animator: {fileID: 1138896301} isBumping: 0 + isHitActive: 0 +--- !u!95 &1138896301 stripped +Animator: + m_CorrespondingSourceObject: {fileID: 2857789264212994300, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} + m_PrefabInstance: {fileID: 1138896296} + m_PrefabAsset: {fileID: 0} --- !u!1 &1358984215 GameObject: m_ObjectHideFlags: 0 @@ -1710,6 +2103,37 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1358984215} m_CullTransparentMesh: 1 +--- !u!1 &1437293785 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1437293786} + m_Layer: 0 + m_Name: Other + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1437293786 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1437293785} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.8774638, y: 5.997923, z: -5.8310637} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1448733079 GameObject: m_ObjectHideFlags: 0 @@ -1963,31 +2387,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 532470427713242256} - - {fileID: 356688633347129428} - - {fileID: 7360795248132421064} - - {fileID: 4224945627643446171} - - {fileID: 3666476648658419757} - - {fileID: 2922681868323186435} - - {fileID: 7414517493221450233} - - {fileID: 9214848968164875920} - - {fileID: 2956791116693350937} - - {fileID: 5789961113561579327} - - {fileID: 4236156797413513937} - - {fileID: 2505050724753016314} - - {fileID: 6256841476678442506} - - {fileID: 9032149253964661708} - - {fileID: 2140874187475647762} - - {fileID: 2084494261253346963} - - {fileID: 2383939671322552595} - - {fileID: 844321564560861092} - - {fileID: 6821326103682323664} - - {fileID: 7534420039734603506} - - {fileID: 1500112412368486135} - - {fileID: 874144538759755420} - - {fileID: 4758945758014007562} - - {fileID: 3495244031271310325} - - {fileID: 7680789973231527251} + - {fileID: 116858840} m_Father: {fileID: 543450653550786323} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!65 &1541236219 @@ -2009,7 +2409,7 @@ BoxCollider: m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 - m_Size: {x: 4.717536, y: 0.78609896, z: 4.7570667} + m_Size: {x: 4, y: 0.78609896, z: 4} m_Center: {x: -0.017825127, y: 0.25400746, z: -0.0030546188} --- !u!1 &1594941782 GameObject: @@ -2155,7 +2555,7 @@ PrefabInstance: m_Modifications: - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalScale.x - value: 0.5 + value: 0.5000001 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalScale.y @@ -2163,7 +2563,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalScale.z - value: 0.5 + value: 0.5000001 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalPosition.x @@ -2171,11 +2571,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalPosition.y - value: 0.7 + value: 0.6999998 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalPosition.z - value: -0.013 + value: -0.013000011 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalRotation.w @@ -2183,7 +2583,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalRotation.x - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalRotation.y @@ -2259,11 +2659,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 72a577870a520a9408488fa07f77d024, type: 3} m_Name: m_EditorClassIdentifier: - moveSpeed: 1 + moveSpeedRange: {x: 1.9, y: 2.1} + retargetSpeedJitter: 0.3 + moveSpeed: 2 decisionInterval: 1.5 bumpRange: 2.5 - roamRadius: 5 - arenaCube: {fileID: 1541236218} + roamRadius: 6.3 + arenaCube: {fileID: 116858840} --- !u!114 &1621446691 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2277,15 +2679,18 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: isPlayerControlled: 0 - moveSpeed: 1 + moveSpeed: 2 joystick: {fileID: 0} - bumpDistance: 1 - bumpSpeed: 7.5 - returnSpeed: 7.5 - cooldown: 2 - knockbackForce: 50 - animator: {fileID: 0} + dashImpulse: 10 + hitWindow: 0.22 + bumpCooldown: 1 + momentumTransferScale: 1 + bonusKnockImpulse: 1 + selfMomentumLoss: 0.5 + pushStunTime: 0.25 + animator: {fileID: 1621446696} isBumping: 0 + isHitActive: 0 --- !u!65 &1621446692 BoxCollider: m_ObjectHideFlags: 0 @@ -2331,9 +2736,14 @@ Rigidbody: m_ImplicitTensor: 1 m_UseGravity: 1 m_IsKinematic: 0 - m_Interpolate: 0 + m_Interpolate: 1 m_Constraints: 80 - m_CollisionDetection: 2 + m_CollisionDetection: 1 +--- !u!95 &1621446696 stripped +Animator: + m_CorrespondingSourceObject: {fileID: 2857789264212994300, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} + m_PrefabInstance: {fileID: 1621446688} + m_PrefabAsset: {fileID: 0} --- !u!1 &1651409926 GameObject: m_ObjectHideFlags: 0 @@ -2505,8 +2915,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1679348638} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -2.007374, y: 1.2717215, z: -0.9977188} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2.007374, y: 1.2717214, z: -0.9977188} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -2599,7 +3009,7 @@ PrefabInstance: m_Modifications: - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalScale.x - value: 0.5 + value: 0.5000001 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalScale.y @@ -2607,19 +3017,19 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalScale.z - value: 0.5 + value: 0.5000001 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalPosition.x - value: -2.054 + value: -2.22 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalPosition.y - value: 0.7 + value: 0.6999998 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalPosition.z - value: -0.011 + value: 0.04 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalRotation.w @@ -2627,7 +3037,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalRotation.x - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalRotation.y @@ -2635,7 +3045,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalRotation.z - value: 0 + value: -0 objectReference: {fileID: 0} - target: {fileID: 3054063725011533134, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_LocalEulerAnglesHint.x @@ -2661,6 +3071,10 @@ PrefabInstance: propertyPath: m_Layer value: 14 objectReference: {fileID: 0} + - target: {fileID: 6612626505630444788, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 6612626505630444788, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} propertyPath: m_TagString value: Zibu @@ -2699,11 +3113,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 72a577870a520a9408488fa07f77d024, type: 3} m_Name: m_EditorClassIdentifier: - moveSpeed: 1 + moveSpeedRange: {x: 1.9, y: 2.1} + retargetSpeedJitter: 0.3 + moveSpeed: 2 decisionInterval: 1.5 bumpRange: 2.5 - roamRadius: 5 - arenaCube: {fileID: 1541236218} + roamRadius: 6.3 + arenaCube: {fileID: 116858840} --- !u!114 &1737939613 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2717,15 +3133,18 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: isPlayerControlled: 0 - moveSpeed: 1 + moveSpeed: 2 joystick: {fileID: 0} - bumpDistance: 1 - bumpSpeed: 7.5 - returnSpeed: 7.5 - cooldown: 2 - knockbackForce: 50 - animator: {fileID: 0} + dashImpulse: 10 + hitWindow: 0.22 + bumpCooldown: 1 + momentumTransferScale: 1 + bonusKnockImpulse: 1 + selfMomentumLoss: 0.5 + pushStunTime: 0.25 + animator: {fileID: 1737939618} isBumping: 0 + isHitActive: 0 --- !u!65 &1737939614 BoxCollider: m_ObjectHideFlags: 0 @@ -2771,9 +3190,14 @@ Rigidbody: m_ImplicitTensor: 1 m_UseGravity: 1 m_IsKinematic: 0 - m_Interpolate: 0 + m_Interpolate: 1 m_Constraints: 80 - m_CollisionDetection: 2 + m_CollisionDetection: 1 +--- !u!95 &1737939618 stripped +Animator: + m_CorrespondingSourceObject: {fileID: 2857789264212994300, guid: b1d02c7b334ae2f4f8b68415cf90170c, type: 3} + m_PrefabInstance: {fileID: 1737939610} + m_PrefabAsset: {fileID: 0} --- !u!1 &1908112355 GameObject: m_ObjectHideFlags: 0 @@ -2875,7 +3299,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1908112355} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1.95, y: 1.95, z: 1.95} m_ConstrainProportionsScale: 1 @@ -2939,7 +3363,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1987710007} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -2989,7 +3413,7 @@ Transform: - {fileID: 6388776413837260497} - {fileID: 3613275393667347549} m_Father: {fileID: 543450653550786323} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} --- !u!1 &1994437745 GameObject: m_ObjectHideFlags: 0 @@ -3480,8 +3904,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2132188140} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.9212832, y: 1.0720987, z: -0.011000022} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.9212832, y: 1.0720987, z: -0.011000156} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -3631,11 +4055,11 @@ Transform: m_GameObject: {fileID: 3801153021963681427} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: 0.9292672, y: -0.13094172, z: 1.9344997} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: 0.21610866, y: -14.966833, z: 0.44988367} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!1 &416473341517271135 GameObject: @@ -3786,11 +4210,11 @@ Transform: m_GameObject: {fileID: 2029817314483810799} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: -1.9368106, y: -0.13094172, z: 1.9345} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: -0.4504211, y: -14.966833, z: 0.44988373} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!4 &543450653550786323 Transform: @@ -3800,7 +4224,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 919132149346037161} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -4004,11 +4428,11 @@ Transform: m_GameObject: {fileID: 4001583640771323269} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: -1.9368106, y: -0.13094172, z: -0.96523756} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: -0.4504211, y: -14.966833, z: -0.22447386} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!4 &874144538759755420 Transform: @@ -4019,11 +4443,11 @@ Transform: m_GameObject: {fileID: 4095779571340613690} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: 0.9346871, y: 0.25282168, z: -0.95588154} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: 0.2173691, y: -7.291566, z: -0.22229804} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!23 &907182013549533261 MeshRenderer: @@ -4374,11 +4798,11 @@ Transform: m_GameObject: {fileID: 7480792610539471638} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: -1.9368106, y: -0.13094172, z: 0.0013436079} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: -0.4504211, y: -14.966833, z: 0.00031246696} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!1 &1554274628782898594 GameObject: @@ -4720,11 +5144,11 @@ Transform: m_GameObject: {fileID: 3861409686220299279} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: 0.9292672, y: -0.13094172, z: -1.9318203} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: 0.21610866, y: -14.966833, z: -0.44926053} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!23 &2108391963691620876 MeshRenderer: @@ -4821,11 +5245,11 @@ Transform: m_GameObject: {fileID: 5806066696048708936} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: -1.9368106, y: -0.13094172, z: 0.9679201} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: -0.4504211, y: -14.966833, z: 0.22509772} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!1 &2167081802007817694 GameObject: @@ -4930,11 +5354,11 @@ Transform: m_GameObject: {fileID: 5956420406639171393} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: -0.98145366, y: -0.13094172, z: -0.96523756} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: -0.22824505, y: -14.966833, z: -0.22447386} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!23 &2419198938165909266 MeshRenderer: @@ -5003,11 +5427,11 @@ Transform: m_GameObject: {fileID: 4475087701552968534} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: -0.98145366, y: -0.13094172, z: 1.9344997} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: -0.22824505, y: -14.966833, z: 0.44988367} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!33 &2505416253754327828 MeshFilter: @@ -5326,11 +5750,11 @@ Transform: m_GameObject: {fileID: 8982480806894568249} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: 1.8846251, y: -0.13094172, z: 0.0013436079} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: 0.4382849, y: -14.966833, z: 0.00031246696} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!4 &2936958706205808347 Transform: @@ -5402,11 +5826,11 @@ Transform: m_GameObject: {fileID: 9066774370270821909} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: -0.02609409, y: -0.13094172, z: -1.9318203} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: -0.006068393, y: -14.966833, z: -0.44926053} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!4 &3081049719385236978 Transform: @@ -5729,11 +6153,11 @@ Transform: m_GameObject: {fileID: 6207424932771818615} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: -0.02609409, y: -0.13094172, z: 0.0013436079} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: -0.006068393, y: -14.966833, z: 0.00031246696} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!33 &3540047622191399139 MeshFilter: @@ -5827,11 +6251,11 @@ Transform: m_GameObject: {fileID: 6879127903492139172} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: -0.98145366, y: -0.13094172, z: 0.0013436079} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: -0.22824505, y: -14.966833, z: 0.00031246696} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!1 &3681017255700334040 GameObject: @@ -6327,11 +6751,11 @@ Transform: m_GameObject: {fileID: 453626185001869965} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: 1.8846251, y: -0.13094172, z: 0.9679201} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: 0.4382849, y: -14.966833, z: 0.22509772} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!4 &4236156797413513937 Transform: @@ -6342,11 +6766,11 @@ Transform: m_GameObject: {fileID: 3335581412965000776} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: -0.02609409, y: -0.13094172, z: -0.96523756} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: -0.006068393, y: -14.966833, z: -0.22447386} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!33 &4261983632924618510 MeshFilter: @@ -6663,11 +7087,11 @@ Transform: m_GameObject: {fileID: 996188318056171703} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: 0.9292672, y: -0.13094172, z: 0.9679201} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: 0.21610866, y: -14.966833, z: 0.22509772} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!33 &4759040134673736799 MeshFilter: @@ -7275,11 +7699,11 @@ Transform: m_GameObject: {fileID: 302786939488031822} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: -1.9368106, y: -0.13094172, z: -1.9318203} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: -0.4504211, y: -14.966833, z: -0.44926053} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!1 &5806066696048708936 GameObject: @@ -7588,11 +8012,11 @@ Transform: m_GameObject: {fileID: 2592568988179318762} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: 0.9292672, y: -0.13094172, z: 0.0013436079} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: 0.21610866, y: -14.966833, z: 0.00031246696} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!23 &6257520741526667109 MeshRenderer: @@ -7883,11 +8307,11 @@ Transform: m_GameObject: {fileID: 2118947018853492696} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: -0.0260941, y: -0.13094172, z: 1.9344997} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: -0.0060683955, y: -14.966833, z: 0.44988367} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!1 &6879127903492139172 GameObject: @@ -8176,11 +8600,11 @@ Transform: m_GameObject: {fileID: 5006500190888337544} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: -0.02609409, y: -0.13094172, z: 0.9679201} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: -0.006068393, y: -14.966833, z: 0.22509772} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!4 &7414517493221450233 Transform: @@ -8191,11 +8615,11 @@ Transform: m_GameObject: {fileID: 4135631856071651710} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: 1.8846251, y: -0.13094172, z: -0.96523756} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: 0.4382849, y: -14.966833, z: -0.22447386} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!23 &7422910835794136949 MeshRenderer: @@ -8344,11 +8768,11 @@ Transform: m_GameObject: {fileID: 5738217741061907187} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: -0.98145366, y: -0.13094172, z: 0.9679201} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: -0.22824505, y: -14.966833, z: 0.22509772} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!4 &7621493328717833822 Transform: @@ -8392,11 +8816,11 @@ Transform: m_GameObject: {fileID: 1744107936161092633} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: -0.98145366, y: -0.13094172, z: -1.9318203} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: -0.22824505, y: -14.966833, z: -0.44926053} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!23 &7721428683557614987 MeshRenderer: @@ -9167,11 +9591,11 @@ Transform: m_GameObject: {fileID: 7481580787844444119} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: 1.8846251, y: -0.13094172, z: 1.9344997} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: 0.4382849, y: -14.966833, z: 0.44988367} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!23 &9060304735110526872 MeshRenderer: @@ -9328,17 +9752,18 @@ Transform: m_GameObject: {fileID: 4339765706526149204} serializedVersion: 2 m_LocalRotation: {x: -0.49991274, y: 0.50008726, z: 0.49991274, w: 0.50008726} - m_LocalPosition: {x: 1.8846251, y: -0.13094172, z: -1.9318203} - m_LocalScale: {x: 100, y: 100, z: 100} + m_LocalPosition: {x: 0.4382849, y: -14.966833, z: -0.44926053} + m_LocalScale: {x: 23.255816, y: 23.25582, z: 1999.9792} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 1541236218} + m_Father: {fileID: 116858840} m_LocalEulerAnglesHint: {x: -89.98, y: 90, z: 0} --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 m_Roots: - {fileID: 10525132} + - {fileID: 354225790} - {fileID: 1093271651} - {fileID: 543450653550786323} - {fileID: 160615288} @@ -9352,3 +9777,6 @@ SceneRoots: - {fileID: 1679348640} - {fileID: 1994437749} - {fileID: 913221586} + - {fileID: 1437293786} + - {fileID: 252440614} + - {fileID: 89338305} diff --git a/Assets/Scripts/CubeClash/CubeClash_Blueberry.cs b/Assets/Scripts/CubeClash/CubeClash_Blueberry.cs index 74dbd20..740e206 100644 --- a/Assets/Scripts/CubeClash/CubeClash_Blueberry.cs +++ b/Assets/Scripts/CubeClash/CubeClash_Blueberry.cs @@ -3,33 +3,44 @@ using System.Collections; public class CubeClash_Blueberry : MonoBehaviour { + [Header("Buff Settings")] public float buffDuration = 5f; - public float distanceBoost = 1.5f; // increase dash distance - public float speedBoost = 1.5f; // increase dash speed - public float cooldownReduction = 0.5f; + + [Tooltip("Multiply forward dash impulse (e.g., 1.4 = +40%).")] + public float impulseMultiplier = 1.4f; + + [Tooltip("Multiply bump cooldown (e.g., 0.7 = 30% faster).")] + public float cooldownMultiplier = 0.7f; + + [Tooltip("Optional: increase momentum transfer (e.g., +0.2 adds on top).")] + public float extraMomentumTransfer = 0.2f; private void OnTriggerEnter(Collider other) { - CubeClash_ZibuController zibu = other.GetComponent(); - if (zibu) - { - StartCoroutine(ApplyBuff(zibu)); - Destroy(gameObject); - } + var zibu = other.GetComponent(); + if (zibu == null) return; + + StartCoroutine(ApplyBuff(zibu)); + Destroy(gameObject); } private IEnumerator ApplyBuff(CubeClash_ZibuController zibu) { - // Apply buffs - zibu.bumpDistance *= distanceBoost; - zibu.bumpSpeed *= speedBoost; - zibu.cooldown *= cooldownReduction; + // cache old values + float oldImpulse = zibu.dashImpulse; + float oldCooldown = zibu.bumpCooldown; + float oldTransfer = zibu.momentumTransferScale; + + // apply buffs + zibu.dashImpulse = oldImpulse * impulseMultiplier; + zibu.bumpCooldown = oldCooldown * cooldownMultiplier; + zibu.momentumTransferScale = oldTransfer + extraMomentumTransfer; yield return new WaitForSeconds(buffDuration); - // Revert buffs - zibu.bumpDistance /= distanceBoost; - zibu.bumpSpeed /= speedBoost; - zibu.cooldown /= cooldownReduction; + // revert + zibu.dashImpulse = oldImpulse; + zibu.bumpCooldown = oldCooldown; + zibu.momentumTransferScale = oldTransfer; } } diff --git a/Assets/CubeClash_Water.cs b/Assets/Scripts/CubeClash/CubeClash_Water.cs similarity index 100% rename from Assets/CubeClash_Water.cs rename to Assets/Scripts/CubeClash/CubeClash_Water.cs diff --git a/Assets/CubeClash_Water.cs.meta b/Assets/Scripts/CubeClash/CubeClash_Water.cs.meta similarity index 100% rename from Assets/CubeClash_Water.cs.meta rename to Assets/Scripts/CubeClash/CubeClash_Water.cs.meta diff --git a/Assets/Scripts/CubeClash/CubeClash_ZibuAI.cs b/Assets/Scripts/CubeClash/CubeClash_ZibuAI.cs index f04734f..7cf4bc2 100644 --- a/Assets/Scripts/CubeClash/CubeClash_ZibuAI.cs +++ b/Assets/Scripts/CubeClash/CubeClash_ZibuAI.cs @@ -6,7 +6,13 @@ using System.Collections.Generic; public class CubeClash_ZibuAI : MonoBehaviour { [Header("AI Settings")] - public float moveSpeed = 3f; + [Tooltip("Each NPC rolls a speed in this range so they don't mirror each other.")] + public Vector2 moveSpeedRange = new Vector2(2.5f, 4.5f); + [Tooltip("Small extra randomization applied when retargeting to keep desynced.")] + public float retargetSpeedJitter = 0.3f; + + [HideInInspector] public float moveSpeed; // current per-agent speed (rolled at runtime) + public float decisionInterval = 2f; public float bumpRange = 2.5f; public float roamRadius = 5f; @@ -28,19 +34,24 @@ public class CubeClash_ZibuAI : MonoBehaviour { zibuController = GetComponent(); rb = GetComponent(); - zibuController.isPlayerControlled = false; if (arenaCube != null) - { arenaBounds = new Bounds(arenaCube.position, arenaCube.localScale); - } + + // Roll an initial per-agent speed + moveSpeed = Random.Range(moveSpeedRange.x, moveSpeedRange.y); + + // Randomize starting decision timer so AIs don’t sync up + decisionTimer = Random.Range(0f, decisionInterval); PickRoamTarget(); } void Update() { + if (zibuController.ControlLocked) return; // don't fight pushes + decisionTimer += Time.deltaTime; if (decisionTimer >= decisionInterval) { @@ -50,38 +61,37 @@ public class CubeClash_ZibuAI : MonoBehaviour if (target != null) { - // move generally towards target, but still bump direction is forward MoveTowards(target.transform.position); TryBumpTarget(); } else { MoveTowards(roamTarget); - if (Vector3.Distance(transform.position, roamTarget) < 1f) - { PickRoamTarget(); - } } } void PickTargetOrRoam() { List allZibus = CubeClash_ZibuController.AllZibus; - if (allZibus.Count > 1) { List candidates = new List(); foreach (var z in allZibus) - { - if (z != zibuController && z != lastTarget) + if (z != zibuController) candidates.Add(z); - } if (candidates.Count > 0) { + if (candidates.Count > 1 && lastTarget != null) + candidates.Remove(lastTarget); + int index = Random.Range(0, candidates.Count); target = candidates[index]; + + // Tiny re-roll of speed to avoid symmetric face-offs + ReRollSpeedSlightly(); return; } } @@ -89,18 +99,18 @@ public class CubeClash_ZibuAI : MonoBehaviour target = null; PickRoamTarget(); } + void MoveTowards(Vector3 destination) { + if (zibuController.ControlLocked) return; // skip if stunned + Vector3 dir = (destination - transform.position).normalized; Vector3 move = new Vector3(dir.x, 0, dir.z) * moveSpeed; rb.velocity = new Vector3(move.x, rb.velocity.y, move.z); if (dir.magnitude > 0.1f) { - // flatten direction on Y axis dir.y = 0; - - // smooth rotate only around Y Quaternion targetRot = Quaternion.LookRotation(dir, Vector3.up); transform.rotation = Quaternion.Slerp(transform.rotation, targetRot, Time.deltaTime * 5f); } @@ -108,17 +118,23 @@ public class CubeClash_ZibuAI : MonoBehaviour void PickRoamTarget() { - Vector3 randomOffset = new Vector3(Random.Range(-roamRadius, roamRadius), 0, Random.Range(-roamRadius, roamRadius)); - roamTarget = transform.position + randomOffset; - + // Pick anywhere in arena to spread agents out if (arenaCube != null) { arenaBounds = new Bounds(arenaCube.position, arenaCube.localScale); - - roamTarget.x = Mathf.Clamp(roamTarget.x, arenaBounds.min.x + 1f, arenaBounds.max.x - 1f); - roamTarget.z = Mathf.Clamp(roamTarget.z, arenaBounds.min.z + 1f, arenaBounds.max.z - 1f); - roamTarget.y = transform.position.y; + float x = Random.Range(arenaBounds.min.x + 1f, arenaBounds.max.x - 1f); + float z = Random.Range(arenaBounds.min.z + 1f, arenaBounds.max.z - 1f); + roamTarget = new Vector3(x, transform.position.y, z); } + else + { + // Fallback: local random offset if no arena assigned + Vector3 randomOffset = new Vector3(Random.Range(-roamRadius, roamRadius), 0, Random.Range(-roamRadius, roamRadius)); + roamTarget = transform.position + randomOffset; + } + + // Slight re-roll on roam choose too + ReRollSpeedSlightly(); } void TryBumpTarget() @@ -130,11 +146,8 @@ public class CubeClash_ZibuAI : MonoBehaviour { Vector3 toTarget = (target.transform.position - transform.position).normalized; float dot = Vector3.Dot(transform.forward, toTarget); - if (dot > 0.7f) - { StartCoroutine(BumpWithDelay()); - } } } @@ -142,16 +155,26 @@ public class CubeClash_ZibuAI : MonoBehaviour { isBumpCooling = true; - yield return new WaitForSeconds(Random.Range(0.1f, 0.4f)); + // Extra jitter before bump to desync + yield return new WaitForSeconds(Random.Range(0.15f, 0.6f)); - zibuController.PerformBump(transform.forward); + if (!zibuController.ControlLocked) + zibuController.PerformBump(transform.forward); - // after bump: forget target & roam somewhere else lastTarget = target; target = null; PickRoamTarget(); - yield return new WaitForSeconds(Random.Range(1f, 2f)); + // Randomized cooldown so they don't re-sync + yield return new WaitForSeconds(Random.Range(1.2f, 2.5f)); isBumpCooling = false; } + + // --- Helpers --- + void ReRollSpeedSlightly() + { + float baseRoll = Random.Range(moveSpeedRange.x, moveSpeedRange.y); + float jitter = Random.Range(-retargetSpeedJitter, retargetSpeedJitter); + moveSpeed = Mathf.Clamp(baseRoll + jitter, moveSpeedRange.x, moveSpeedRange.y); + } } diff --git a/Assets/Scripts/CubeClash/CubeClash_ZibuController.cs b/Assets/Scripts/CubeClash/CubeClash_ZibuController.cs index c63edf9..8ec6f79 100644 --- a/Assets/Scripts/CubeClash/CubeClash_ZibuController.cs +++ b/Assets/Scripts/CubeClash/CubeClash_ZibuController.cs @@ -9,31 +9,50 @@ public class CubeClash_ZibuController : MonoBehaviour [Header("Control")] public bool isPlayerControlled = true; - - [Header("Movement Settings")] public float moveSpeed = 5f; public Joystick joystick; - [Header("Bump Settings")] - public float bumpDistance = 3f; - public float bumpSpeed = 20f; - public float returnSpeed = 10f; - public float cooldown = 2f; - public float knockbackForce = 15f; + [Header("Bump (Physics)")] + [Tooltip("Impulse strength added in forward direction when bump starts.")] + public float dashImpulse = 12f; + + [Tooltip("How long collisions count as 'bumping' (hit-active window).")] + public float hitWindow = 0.22f; + + [Tooltip("Cooldown after bump sequence finishes.")] + public float bumpCooldown = 1.0f; + + [Header("Momentum Transfer")] + [Tooltip("Scales impulse delivered to the other Zibu on hit.")] + public float momentumTransferScale = 0.9f; + + [Tooltip("Extra kick added to the victim on hit.")] + public float bonusKnockImpulse = 2f; + + [Tooltip("How much of our forward momentum we lose on hit (0..1).")] + public float selfMomentumLoss = 0.25f; + + [Header("Hit Reaction")] + [Tooltip("Time (sec) the victim loses control after being pushed.")] + public float pushStunTime = 0.25f; [Header("Animation")] - public Animator animator; // assign in Inspector + public Animator animator; // optional + // --- runtime private Rigidbody rb; private bool canBump = true; - [HideInInspector] public bool isBumping = false; + + [HideInInspector] public bool isBumping = false; // only during dash + hit window + [HideInInspector] public bool isHitActive = false; + + private float stunUntilTime = -999f; + public bool ControlLocked => isBumping || Time.time < stunUntilTime; void OnEnable() { - if (!AllZibus.Contains(this)) - AllZibus.Add(this); + if (!AllZibus.Contains(this)) AllZibus.Add(this); } - void OnDisable() { AllZibus.Remove(this); @@ -43,105 +62,151 @@ public class CubeClash_ZibuController : MonoBehaviour { rb = GetComponent(); if (animator == null) animator = GetComponentInChildren(); + + // Physics stability + rb.collisionDetectionMode = CollisionDetectionMode.Continuous; + rb.interpolation = RigidbodyInterpolation.Interpolate; + rb.solverIterations = Mathf.Max(rb.solverIterations, 12); + rb.solverVelocityIterations = Mathf.Max(rb.solverVelocityIterations, 12); + + // freeze tilt rotations + rb.constraints |= RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationZ; } void Update() { - if (isPlayerControlled && !isBumping) - { + if (isPlayerControlled && !ControlLocked) HandleMovement(); - } UpdateAnimations(); + FaceVelocity(); // always face movement } private void HandleMovement() { - if (joystick != null) - { - Vector3 move = new Vector3(joystick.Horizontal, 0, joystick.Vertical); - if (move.magnitude > 0.1f) - { - Vector3 targetVelocity = move.normalized * moveSpeed; - rb.velocity = new Vector3(targetVelocity.x, rb.velocity.y, targetVelocity.z); + if (joystick == null) return; - // face only in Y-axis - Quaternion targetRot = Quaternion.LookRotation(new Vector3(move.x, 0, move.z)); - transform.rotation = Quaternion.Slerp(transform.rotation, targetRot, Time.deltaTime * 10f); - } - else - { - rb.velocity = new Vector3(0, rb.velocity.y, 0); - } + Vector3 move = new Vector3(joystick.Horizontal, 0, joystick.Vertical); + if (move.sqrMagnitude > 0.01f) + { + Vector3 targetVel = move.normalized * moveSpeed; + rb.velocity = new Vector3(targetVel.x, rb.velocity.y, targetVel.z); + + // smooth yaw-only rotation + Quaternion targetRot = Quaternion.LookRotation(new Vector3(move.x, 0, move.z), Vector3.up); + transform.rotation = Quaternion.Slerp(transform.rotation, targetRot, Time.deltaTime * 10f); + } + else + { + rb.velocity = new Vector3(0f, rb.velocity.y, 0f); + } + } + + private void FaceVelocity() + { + Vector3 v = rb.velocity; + v.y = 0; + if (v.sqrMagnitude > 0.05f) // ignore tiny jitter + { + Quaternion targetRot = Quaternion.LookRotation(v.normalized, Vector3.up); + transform.rotation = Quaternion.Slerp(transform.rotation, targetRot, Time.deltaTime * 10f); } } private void UpdateAnimations() { - if (animator != null) - { - // Use velocity magnitude (XZ only) to set "Speed" - Vector3 horizontalVel = new Vector3(rb.velocity.x, 0, rb.velocity.z); - float speed = horizontalVel.magnitude; - - animator.SetFloat("Speed", speed); - } + if (!animator) return; + Vector3 horiz = new Vector3(rb.velocity.x, 0, rb.velocity.z); + animator.SetFloat("Speed", horiz.magnitude); } + // Player UI public void PerformBump() { - if (!canBump || isBumping) return; - StartCoroutine(BumpRoutine(transform.forward)); + if (!canBump || ControlLocked) return; + StartCoroutine(BumpSequence(transform.forward)); } + // AI public void PerformBump(Vector3 direction) { - if (!canBump || isBumping) return; - StartCoroutine(BumpRoutine(direction)); + if (!canBump || ControlLocked) return; + StartCoroutine(BumpSequence(direction)); } - private IEnumerator BumpRoutine(Vector3 direction) + private IEnumerator BumpSequence(Vector3 direction) { canBump = false; isBumping = true; - Vector3 startPos = transform.position; - Vector3 targetPos = startPos + direction.normalized * bumpDistance; + // Clean start (optional): limit drift so dash reads crisp + Vector3 horiz = new Vector3(rb.velocity.x, 0f, rb.velocity.z); + rb.velocity = new Vector3(0f, rb.velocity.y, 0f) + horiz * 0.25f; - float t = 0f; - while (t < 1f) - { - t += Time.deltaTime * bumpSpeed; - rb.MovePosition(Vector3.Lerp(startPos, targetPos, t)); - yield return null; - } + // --- Dash forward impulse (pure physics) --- + Vector3 fwd = new Vector3(direction.x, 0, direction.z); + if (fwd.sqrMagnitude < 0.001f) fwd = transform.forward; + fwd.Normalize(); + rb.AddForce(fwd * dashImpulse, ForceMode.Impulse); - t = 0f; - while (t < 1f) - { - t += Time.deltaTime * returnSpeed; - rb.MovePosition(Vector3.Lerp(targetPos, startPos, t)); - yield return null; - } + // Collisions are “hot†only during this window + isHitActive = true; + yield return new WaitForSeconds(hitWindow); + isHitActive = false; + // End bump; control resumes, velocity continues naturally isBumping = false; - yield return new WaitForSeconds(cooldown); + // Cooldown before next bump + yield return new WaitForSeconds(bumpCooldown); canBump = true; } - private void OnCollisionEnter(Collision collision) + // External: short lock so physics can show the shove + public void ApplyPushStun(float seconds) { - CubeClash_ZibuController other = collision.gameObject.GetComponent(); - if (other != null) - { - if (isBumping && other.isBumping) return; + float until = Time.time + Mathf.Max(0f, seconds); + if (until > stunUntilTime) stunUntilTime = until; + } - if (isBumping && !other.isBumping && other.rb != null) - { - Vector3 pushDir = transform.forward.normalized; - other.rb.AddForce(pushDir * knockbackForce, ForceMode.Impulse); - } + private void OnCollisionEnter(Collision c) => HandleBumpCollision(c); + private void OnCollisionStay(Collision c) => HandleBumpCollision(c); + + private void HandleBumpCollision(Collision c) + { + if (!isHitActive) return; + + var other = c.collider.GetComponent(); + if (other == null) return; + + // If both are in hit window, let raw physics resolve + if (other.isHitActive) return; + + var otherRb = other.GetComponent(); + if (otherRb == null) return; + + // Push direction = our forward + Vector3 pushDir = transform.forward; + pushDir.y = 0; + pushDir.Normalize(); + + Vector3 relVel = rb.velocity - otherRb.velocity; + float approach = Vector3.Dot(relVel, pushDir); + if (approach <= 0f) return; + + float impulseMag = (rb.mass * approach * momentumTransferScale) + bonusKnockImpulse; + Vector3 impulse = pushDir * impulseMag; + + // pure shove, no torque + otherRb.AddForce(impulse, ForceMode.Impulse); + + // Lock their movement briefly so they don't cancel the shove + other.ApplyPushStun(pushStunTime); + + if (selfMomentumLoss > 0f) + { + Vector3 ourForward = Vector3.Project(rb.velocity, pushDir); + rb.AddForce(-ourForward * selfMomentumLoss * rb.mass, ForceMode.Impulse); } } } diff --git a/Assets/Skywalker_Blueberry.cs b/Assets/Scripts/SkyWalker/Skywalker_Blueberry.cs similarity index 100% rename from Assets/Skywalker_Blueberry.cs rename to Assets/Scripts/SkyWalker/Skywalker_Blueberry.cs diff --git a/Assets/Skywalker_Blueberry.cs.meta b/Assets/Scripts/SkyWalker/Skywalker_Blueberry.cs.meta similarity index 100% rename from Assets/Skywalker_Blueberry.cs.meta rename to Assets/Scripts/SkyWalker/Skywalker_Blueberry.cs.meta diff --git a/Assets/Skywalker_BlueberryManager.cs b/Assets/Scripts/SkyWalker/Skywalker_BlueberryManager.cs similarity index 100% rename from Assets/Skywalker_BlueberryManager.cs rename to Assets/Scripts/SkyWalker/Skywalker_BlueberryManager.cs diff --git a/Assets/Skywalker_BlueberryManager.cs.meta b/Assets/Scripts/SkyWalker/Skywalker_BlueberryManager.cs.meta similarity index 100% rename from Assets/Skywalker_BlueberryManager.cs.meta rename to Assets/Scripts/SkyWalker/Skywalker_BlueberryManager.cs.meta diff --git a/Assets/Skywalker_BounceObstacle.cs b/Assets/Scripts/SkyWalker/Skywalker_BounceObstacle.cs similarity index 100% rename from Assets/Skywalker_BounceObstacle.cs rename to Assets/Scripts/SkyWalker/Skywalker_BounceObstacle.cs diff --git a/Assets/Skywalker_BounceObstacle.cs.meta b/Assets/Scripts/SkyWalker/Skywalker_BounceObstacle.cs.meta similarity index 100% rename from Assets/Skywalker_BounceObstacle.cs.meta rename to Assets/Scripts/SkyWalker/Skywalker_BounceObstacle.cs.meta diff --git a/Assets/Skywalker_FrontFan.cs b/Assets/Scripts/SkyWalker/Skywalker_FrontFan.cs similarity index 100% rename from Assets/Skywalker_FrontFan.cs rename to Assets/Scripts/SkyWalker/Skywalker_FrontFan.cs diff --git a/Assets/Skywalker_FrontFan.cs.meta b/Assets/Scripts/SkyWalker/Skywalker_FrontFan.cs.meta similarity index 100% rename from Assets/Skywalker_FrontFan.cs.meta rename to Assets/Scripts/SkyWalker/Skywalker_FrontFan.cs.meta diff --git a/Assets/Skywalker_GameManager.cs b/Assets/Scripts/SkyWalker/Skywalker_GameManager.cs similarity index 100% rename from Assets/Skywalker_GameManager.cs rename to Assets/Scripts/SkyWalker/Skywalker_GameManager.cs diff --git a/Assets/Skywalker_GameManager.cs.meta b/Assets/Scripts/SkyWalker/Skywalker_GameManager.cs.meta similarity index 100% rename from Assets/Skywalker_GameManager.cs.meta rename to Assets/Scripts/SkyWalker/Skywalker_GameManager.cs.meta diff --git a/Assets/Skywalker_HorizontalPlatformSpawner.cs b/Assets/Scripts/SkyWalker/Skywalker_HorizontalPlatformSpawner.cs similarity index 100% rename from Assets/Skywalker_HorizontalPlatformSpawner.cs rename to Assets/Scripts/SkyWalker/Skywalker_HorizontalPlatformSpawner.cs diff --git a/Assets/Skywalker_HorizontalPlatformSpawner.cs.meta b/Assets/Scripts/SkyWalker/Skywalker_HorizontalPlatformSpawner.cs.meta similarity index 100% rename from Assets/Skywalker_HorizontalPlatformSpawner.cs.meta rename to Assets/Scripts/SkyWalker/Skywalker_HorizontalPlatformSpawner.cs.meta diff --git a/Assets/Skywalker_Obstacle.cs b/Assets/Scripts/SkyWalker/Skywalker_Obstacle.cs similarity index 100% rename from Assets/Skywalker_Obstacle.cs rename to Assets/Scripts/SkyWalker/Skywalker_Obstacle.cs diff --git a/Assets/Skywalker_Obstacle.cs.meta b/Assets/Scripts/SkyWalker/Skywalker_Obstacle.cs.meta similarity index 100% rename from Assets/Skywalker_Obstacle.cs.meta rename to Assets/Scripts/SkyWalker/Skywalker_Obstacle.cs.meta diff --git a/Assets/Skywalker_WallPool.cs b/Assets/Scripts/SkyWalker/Skywalker_WallPool.cs similarity index 100% rename from Assets/Skywalker_WallPool.cs rename to Assets/Scripts/SkyWalker/Skywalker_WallPool.cs diff --git a/Assets/Skywalker_WallPool.cs.meta b/Assets/Scripts/SkyWalker/Skywalker_WallPool.cs.meta similarity index 100% rename from Assets/Skywalker_WallPool.cs.meta rename to Assets/Scripts/SkyWalker/Skywalker_WallPool.cs.meta