Lots of bug fixes

This commit is contained in:
Данил Ярош 2025-09-29 15:54:36 +03:00
parent dade82f5d1
commit 25a572c990
68 changed files with 94089 additions and 332916 deletions

View File

@ -0,0 +1,43 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: EnemyMenu
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
m_StateMachine: {fileID: 5554690328707347593}
m_Mask: {fileID: 0}
m_Motions: []
m_Behaviours: []
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1107 &5554690328707347593
AnimatorStateMachine:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Base Layer
m_ChildStates: []
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: 0}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2afc6fa6fcbfb754aa775b11c5938bcd
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -63,6 +63,37 @@ Transform:
m_Children: []
m_Father: {fileID: 6550761234898366363}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &5903417341437589015
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5801227406600662915}
m_Layer: 0
m_Name: GroundCheck
m_TagString: Untagged
m_Icon: {fileID: -5442936267250999957, guid: 0000000000000000d000000000000000, type: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5801227406600662915
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5903417341437589015}
serializedVersion: 2
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
m_Children: []
m_Father: {fileID: 6550761235523395908}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &6550761233853193377
GameObject:
m_ObjectHideFlags: 0
@ -1757,7 +1788,7 @@ Transform:
m_GameObject: {fileID: 6550761234824477151}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0.08, y: -1.47, z: 0}
m_LocalPosition: {x: 0.08, y: 2.27, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
@ -2563,6 +2594,7 @@ Transform:
m_ConstrainProportionsScale: 1
m_Children:
- {fileID: 6550761234824477150}
- {fileID: 5801227406600662915}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!95 &6550761235523395915
@ -2648,7 +2680,7 @@ CapsuleCollider2D:
m_UsedByEffector: 0
m_CompositeOperation: 0
m_CompositeOrder: 0
m_Offset: {x: 0.05339554, y: 0.1815469}
m_Offset: {x: 0.05339554, y: 3.98}
m_Size: {x: 5.295173, y: 7.97864}
m_Direction: 0
--- !u!114 &5723917688524288437
@ -2668,11 +2700,15 @@ MonoBehaviour:
moveSpeed: 9
accel: 100
decel: 30
maxJumpHeight: 5
jumpCooldown: 0.1
jumpBuffer: 0.1
jumpCut: 0.5
jumpVelocity: 32
jumpCut: 2
groundCheck: {fileID: 5801227406600662915}
groundCheckRadius: 0.1
groundMask:
serializedVersion: 2
m_Bits: 64
animator: {fileID: 0}
deathY: -5
--- !u!114 &6106630833600239313
MonoBehaviour:
m_ObjectHideFlags: 0
@ -2689,6 +2725,7 @@ MonoBehaviour:
projectilePrefab: {fileID: 4169089013277977673, guid: 7fd3a37dc702ece42b51e5867473f0ff, type: 3}
spawnIfMissing: 0
throwSpeed: 20
launchAxis: {x: 1, y: 0}
attachPoint: {fileID: 6550761234593413718}
--- !u!1 &6550761235546795891
GameObject:

View File

@ -112,33 +112,30 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
initialSpeed: 25
ignoreOwnerTime: 0.05
maxLifetime: 5
hitLayers:
serializedVersion: 2
m_Bits: 4294967295
maxPierce: 0
useGravity: 1
gravityScale: 1
hitVfxPrefab: {fileID: 0}
hitSfx: {fileID: 0}
sfxVolume: 1
alignRotationToVelocity: 1
knockback: 0
owner: {fileID: 0}
heldLocalOffset: {x: 0.25, y: 0.1, z: 0}
heldScale: 1.5
ignoreOwnerTimeOnThrow: 0.1
attachPointChildName: HandPoint
groundVelocity: 0.05
maxGroundSlideTime: 1
lockWhenLanded: 1
maxBounces: 5
minBounceSpeed: 0.1
restitution: 0.6
tangentDamping: 0.85
stickDelayAfterImpact: 0.03
recallStartDistance: 10
recallScreenMarginPercent: 5
recallArriveDistance: 1.4
recallSpeed: 16
recallStartDistance: 10
drawGizmos: 1
gizmoColor: {r: 0.2, g: 0.8, b: 1, a: 0.35}
--- !u!1 &7932273378799574310

View File

@ -101,7 +101,7 @@ GameObject:
- component: {fileID: 2578964165629714180}
m_Layer: 0
m_Name: RotatingAxe
m_TagString: Untagged
m_TagString: Trap
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0

View File

@ -100,7 +100,7 @@ GameObject:
- component: {fileID: -3186745741404079580}
m_Layer: 0
m_Name: Spike
m_TagString: Untagged
m_TagString: Trap
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0

View File

@ -14,7 +14,7 @@ GameObject:
- component: {fileID: 7496764387309220445}
m_Layer: 0
m_Name: Spikes
m_TagString: Untagged
m_TagString: Trap
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0

View File

@ -12,6 +12,10 @@ PrefabInstance:
propertyPath: m_Name
value: SpikesHalf
objectReference: {fileID: 0}
- target: {fileID: 806860808189316064, guid: 67e6c76bc4c4797499f5b2a55fc7ab4a, type: 3}
propertyPath: m_TagString
value: Trap
objectReference: {fileID: 0}
- target: {fileID: 1720727608838544701, guid: 67e6c76bc4c4797499f5b2a55fc7ab4a, type: 3}
propertyPath: m_ColliderPaths.Array.size
value: 4
@ -74,11 +78,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 2347305776405518860, guid: 67e6c76bc4c4797499f5b2a55fc7ab4a, type: 3}
propertyPath: m_LocalPosition.x
value: 0
value: -108
objectReference: {fileID: 0}
- target: {fileID: 2347305776405518860, guid: 67e6c76bc4c4797499f5b2a55fc7ab4a, type: 3}
propertyPath: m_LocalPosition.y
value: 0
value: -21
objectReference: {fileID: 0}
- target: {fileID: 2347305776405518860, guid: 67e6c76bc4c4797499f5b2a55fc7ab4a, type: 3}
propertyPath: m_LocalPosition.z
@ -90,15 +94,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 2347305776405518860, guid: 67e6c76bc4c4797499f5b2a55fc7ab4a, type: 3}
propertyPath: m_LocalRotation.x
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2347305776405518860, guid: 67e6c76bc4c4797499f5b2a55fc7ab4a, type: 3}
propertyPath: m_LocalRotation.y
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2347305776405518860, guid: 67e6c76bc4c4797499f5b2a55fc7ab4a, type: 3}
propertyPath: m_LocalRotation.z
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 2347305776405518860, guid: 67e6c76bc4c4797499f5b2a55fc7ab4a, type: 3}
propertyPath: m_LocalEulerAnglesHint.x

View File

@ -14,7 +14,7 @@ GameObject:
- component: {fileID: 5000942122010169820}
m_Layer: 0
m_Name: SwingingAxe
m_TagString: Untagged
m_TagString: Trap
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0

View File

@ -0,0 +1,315 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &5670642228506106635
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5427100241935526094}
m_Layer: 0
m_Name: Camera
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5427100241935526094
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5670642228506106635}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 1.762578, y: 0.44624943, z: -18.56041}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1219275281515896867}
- {fileID: 8202091211817645618}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &6159120904148166672
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8202091211817645618}
- component: {fileID: 4530764327870927426}
- component: {fileID: 6884047887300489009}
- component: {fileID: 3538067681496983980}
m_Layer: 0
m_Name: CinemachineCamera
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8202091211817645618
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6159120904148166672}
serializedVersion: 2
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
m_Children: []
m_Father: {fileID: 5427100241935526094}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4530764327870927426
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6159120904148166672}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f9dfa5b682dcd46bda6128250e975f58, type: 3}
m_Name:
m_EditorClassIdentifier:
Priority:
Enabled: 0
m_Value: 0
OutputChannel: 1
StandbyUpdate: 2
m_StreamingVersion: 20241001
m_LegacyPriority: 0
Target:
TrackingTarget: {fileID: 0}
LookAtTarget: {fileID: 0}
CustomLookAtTarget: 0
Lens:
FieldOfView: 56
OrthographicSize: 8
NearClipPlane: 0.3
FarClipPlane: 1000
Dutch: 0
ModeOverride: 0
PhysicalProperties:
GateFit: 2
SensorSize: {x: 21.946, y: 16.002}
LensShift: {x: 0, y: 0}
FocusDistance: 10
Iso: 200
ShutterSpeed: 0.005
Aperture: 16
BladeCount: 5
Curvature: {x: 2, y: 11}
BarrelClipping: 0.25
Anamorphism: 0
BlendHint: 0
--- !u!114 &6884047887300489009
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6159120904148166672}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b617507da6d07e749b7efdb34e1173e1, type: 3}
m_Name:
m_EditorClassIdentifier:
TrackerSettings:
BindingMode: 4
PositionDamping: {x: 0, y: 1, z: 1}
AngularDampingMode: 0
RotationDamping: {x: 1, y: 1, z: 1}
QuaternionDamping: 1
FollowOffset: {x: 0, y: 3, z: -10}
--- !u!114 &3538067681496983980
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6159120904148166672}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: af1b9ff67ef498c43a823d7829b14644, type: 3}
m_Name:
m_EditorClassIdentifier:
interpolationTime: 0.01
offset: {x: 6, y: 3, z: -20}
--- !u!1 &6824433044661743276
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1219275281515896867}
- component: {fileID: 7126695196591373371}
- component: {fileID: 8217485225415742300}
- component: {fileID: 7281225583321729769}
- component: {fileID: 518003210058777957}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1219275281515896867
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6824433044661743276}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 66.68121, y: 7.020945, z: 7.0706425}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5427100241935526094}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!20 &7126695196591373371
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6824433044661743276}
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: 56
orthographic: 1
orthographic size: 8
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 0
m_HDR: 1
m_AllowMSAA: 0
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 0
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!81 &8217485225415742300
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6824433044661743276}
m_Enabled: 1
--- !u!114 &7281225583321729769
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6824433044661743276}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_RenderShadows: 1
m_RequiresDepthTextureOption: 2
m_RequiresOpaqueTextureOption: 2
m_CameraType: 0
m_Cameras: []
m_RendererIndex: -1
m_VolumeLayerMask:
serializedVersion: 2
m_Bits: 1
m_VolumeTrigger: {fileID: 0}
m_VolumeFrameworkUpdateModeOption: 2
m_RenderPostProcessing: 0
m_Antialiasing: 0
m_AntialiasingQuality: 2
m_StopNaN: 0
m_Dithering: 0
m_ClearDepth: 1
m_AllowXRRendering: 1
m_AllowHDROutput: 1
m_UseScreenCoordOverride: 0
m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0}
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
m_TaaSettings:
m_Quality: 3
m_FrameInfluence: 0.1
m_JitterScale: 1
m_MipBias: 0
m_VarianceClampScale: 0.9
m_ContrastAdaptiveSharpening: 0
--- !u!114 &518003210058777957
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6824433044661743276}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 72ece51f2901e7445ab60da3685d6b5f, type: 3}
m_Name:
m_EditorClassIdentifier:
ShowDebugText: 0
ShowCameraFrustum: 1
IgnoreTimeScale: 0
WorldUpOverride: {fileID: 0}
ChannelMask: -1
UpdateMethod: 2
BlendUpdateMethod: 1
LensModeOverride:
Enabled: 0
DefaultMode: 2
DefaultBlend:
Style: 1
Time: 2
CustomCurve:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
CustomBlends: {fileID: 0}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ff70cd57edcbc3c439493cb8c61b9072
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -150,7 +150,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: b90fe4c0ad927154c88644503fbb00a3, type: 3}
m_Name:
m_EditorClassIdentifier:
damping: 1.5
damping: 10
offset: {x: 2, y: 1}
faceLeft: 0
snapOnFound: 1

View File

@ -157,7 +157,7 @@ Transform:
m_GameObject: {fileID: 9818853}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -0.12675886, y: 2.2426212, z: 0.12992167}
m_LocalPosition: {x: -0.12675886, y: 0, z: 0.12992167}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
@ -390,11 +390,11 @@ Transform:
m_GameObject: {fileID: 44905401}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -2.195076, y: 2.8562646, z: 0.034816958}
m_LocalPosition: {x: -2.195076, y: 2.8562646, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &47229777
GameObject:
@ -422,11 +422,11 @@ Transform:
m_GameObject: {fileID: 47229777}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 38.464314, y: 3.9489975, z: 0.034816958}
m_LocalPosition: {x: 38.464317, y: 3.9489973, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &47229779
SpriteRenderer:
@ -508,7 +508,7 @@ Transform:
m_GameObject: {fileID: 70046926}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalPosition: {x: 0, y: -2.25, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
@ -543,11 +543,11 @@ Transform:
m_GameObject: {fileID: 167495489}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 38.08527, y: 4.2988796, z: 0.034816958}
m_LocalPosition: {x: 38.085274, y: 4.2988796, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &167495491
SpriteRenderer:
@ -722,11 +722,11 @@ Transform:
m_GameObject: {fileID: 212206180}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 43.65182, y: 2.4581144, z: 0.034816958}
m_LocalPosition: {x: 43.651817, y: 2.4581144, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &212206182
SpriteRenderer:
@ -988,11 +988,11 @@ Transform:
m_GameObject: {fileID: 283678863}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -18.238615, y: 3.3072014, z: 0.034816958}
m_LocalPosition: {x: -18.238615, y: 3.3072014, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &297593549
GameObject:
@ -1075,11 +1075,11 @@ Transform:
m_GameObject: {fileID: 297593549}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -47.71935, y: 0.274863, z: 0.034816958}
m_LocalPosition: {x: -47.71935, y: 0.274863, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &301459643
GameObject:
@ -1107,11 +1107,11 @@ Transform:
m_GameObject: {fileID: 301459643}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 39.834682, y: -0.6286221, z: 0.034816958}
m_LocalPosition: {x: 39.83468, y: -0.6286221, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &301459645
SpriteRenderer:
@ -1426,7 +1426,7 @@ Transform:
m_GameObject: {fileID: 420109085}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 15.552698, y: 4.265652, z: 0.10044405}
m_LocalPosition: {x: 15.552698, y: 2, z: 0.10044405}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
@ -1458,6 +1458,93 @@ Transform:
m_CorrespondingSourceObject: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
m_PrefabInstance: {fileID: 822399168}
m_PrefabAsset: {fileID: 0}
--- !u!1 &429782348
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 429782349}
- component: {fileID: 429782350}
m_Layer: 0
m_Name: Signs_1_0
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &429782349
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 429782348}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -2, y: 3.5, z: 0.03481698}
m_LocalScale: {x: 0.15, y: 0.15, z: 0.15}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 1918398180}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &429782350
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 429782348}
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_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
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: 6206282737619276625, guid: e2bdf0f30770013479cc6bbe36a0313d, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 10.24, y: 13.98}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!4 &438569428 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
@ -1544,11 +1631,11 @@ Transform:
m_GameObject: {fileID: 492283475}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -6.8913956, y: 3.0066137, z: 0.034816958}
m_LocalPosition: {x: -6.8913956, y: 3.0066137, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &547911009
PrefabInstance:
@ -1633,11 +1720,11 @@ Transform:
m_GameObject: {fileID: 574260392}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 43.65182, y: 1.7168629, z: 0.034816958}
m_LocalPosition: {x: 43.651817, y: 1.7168629, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &574260394
SpriteRenderer:
@ -1781,6 +1868,75 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1001 &601953095
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 1219275281515896867, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1219275281515896867, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1219275281515896867, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalPosition.x
value: 1.762578
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalPosition.y
value: 0.44624943
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalPosition.z
value: -18.56041
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5670642228506106635, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_Name
value: Camera
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
--- !u!1001 &608729446
PrefabInstance:
m_ObjectHideFlags: 0
@ -3199,11 +3355,11 @@ Transform:
m_GameObject: {fileID: 738926876}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 9.020653, y: 4.361387, z: 0.034816958}
m_LocalPosition: {x: 9.020653, y: 4.361387, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 1918398180}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &778197107
PrefabInstance:
@ -3262,6 +3418,93 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
--- !u!1 &785675586
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 785675587}
- component: {fileID: 785675588}
m_Layer: 0
m_Name: Signs_50
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &785675587
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 785675586}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 17, y: 4.5, z: 0.03481698}
m_LocalScale: {x: 1.5, y: 1.5, z: 1.5}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 1918398180}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &785675588
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 785675586}
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_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
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: 21300000, guid: 6bf6ab5c1534fe44b803733131ceacb9, 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.08, y: 1.3}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &816693759
GameObject:
m_ObjectHideFlags: 0
@ -3343,11 +3586,11 @@ Transform:
m_GameObject: {fileID: 816693759}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -20.267591, y: 3.0066123, z: 0.034816958}
m_LocalPosition: {x: -20.267591, y: 3.0066123, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &822399168
PrefabInstance:
@ -3492,11 +3735,11 @@ Transform:
m_GameObject: {fileID: 835876318}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -31.339287, y: 2.3648632, z: 0.034816958}
m_LocalPosition: {x: -31.339287, y: 2.3648632, z: 0.03481695}
m_LocalScale: {x: 2, y: 2, z: 2}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &845154678 stripped
Transform:
@ -3652,6 +3895,58 @@ Transform:
m_CorrespondingSourceObject: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
m_PrefabInstance: {fileID: 1801184241}
m_PrefabAsset: {fileID: 0}
--- !u!1 &884524460
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 884524461}
m_Layer: 0
m_Name: Filling
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &884524461
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 884524460}
serializedVersion: 2
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
m_Children:
- {fileID: 297593551}
- {fileID: 1865345060}
- {fileID: 835876320}
- {fileID: 1705686278}
- {fileID: 1672719339}
- {fileID: 816693761}
- {fileID: 283678865}
- {fileID: 1006087432}
- {fileID: 1447080356}
- {fileID: 492283477}
- {fileID: 44905403}
- {fileID: 2137872388}
- {fileID: 1719152190}
- {fileID: 2002855135}
- {fileID: 212206181}
- {fileID: 574260393}
- {fileID: 1965855876}
- {fileID: 1914778550}
- {fileID: 301459644}
- {fileID: 167495490}
- {fileID: 47229778}
m_Father: {fileID: 2144574669}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &886511364 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 9047623735812724493, guid: c89f36ea52da92447be55c6f344acee8, type: 3}
@ -3806,11 +4101,11 @@ Transform:
m_GameObject: {fileID: 1006087430}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -14.907085, y: 3.207005, z: 0.034816958}
m_LocalPosition: {x: -14.907085, y: 3.207005, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1029747751
GameObject:
@ -3981,7 +4276,7 @@ Transform:
m_GameObject: {fileID: 1053302774}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.12675886, y: -2.2426212, z: -0.12992167}
m_LocalPosition: {x: 0.12675886, y: 0, z: -0.12992167}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
@ -4469,7 +4764,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 566033136593361935, guid: ab23b26a9910d684baf2634211134ca6, type: 3}
propertyPath: m_LocalPosition.y
value: 1.3
value: 0
objectReference: {fileID: 0}
- target: {fileID: 566033136593361935, guid: ab23b26a9910d684baf2634211134ca6, type: 3}
propertyPath: m_LocalPosition.z
@ -4593,11 +4888,11 @@ Transform:
m_GameObject: {fileID: 1447080354}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: 0.42800963, w: 0.9037742}
m_LocalPosition: {x: -8.989346, y: 0.864863, z: 0.034816958}
m_LocalPosition: {x: -8.989346, y: 0.864863, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 50.683}
--- !u!1001 &1449142390
PrefabInstance:
@ -4953,11 +5248,11 @@ Transform:
m_GameObject: {fileID: 1672719337}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -41.35892, y: 0.17606539, z: 0.034816958}
m_LocalPosition: {x: -41.35892, y: 0.17606537, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1693641627
GameObject:
@ -4973,7 +5268,7 @@ GameObject:
- component: {fileID: 1693641632}
- component: {fileID: 1693641633}
- component: {fileID: 1693641631}
m_Layer: 0
m_Layer: 6
m_Name: Tilemap Ground
m_TagString: Ground
m_Icon: {fileID: 0}
@ -14624,11 +14919,11 @@ Transform:
m_GameObject: {fileID: 1705686276}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -40.30686, y: 0.22616357, z: 0.034816958}
m_LocalPosition: {x: -40.30686, y: 0.22616355, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1719152189
GameObject:
@ -14656,11 +14951,11 @@ Transform:
m_GameObject: {fileID: 1719152189}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 12.702854, y: 5.204863, z: 0.034816958}
m_LocalPosition: {x: 12.702854, y: 5.204863, z: 0.03481695}
m_LocalScale: {x: 2, y: 2, z: 2}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &1719152191
SpriteRenderer:
@ -14912,11 +15207,11 @@ Transform:
m_GameObject: {fileID: 1865345058}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -34.54557, y: 0.9776363, z: 0.034816958}
m_LocalPosition: {x: -34.54557, y: 0.9776363, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1879897647
GameObject:
@ -15041,11 +15336,11 @@ Transform:
m_GameObject: {fileID: 1914778549}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 24.556507, y: 3.9781542, z: 0.034816958}
m_LocalPosition: {x: 24.55651, y: 3.978154, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &1914778551
SpriteRenderer:
@ -15102,6 +15397,41 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &1918398179
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1918398180}
m_Layer: 0
m_Name: Informative
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1918398180
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1918398179}
serializedVersion: 2
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
m_Children:
- {fileID: 738926878}
- {fileID: 2057076528}
- {fileID: 429782349}
- {fileID: 785675587}
m_Father: {fileID: 2144574669}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &1942398706 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3897414768386052035, guid: fd2391a459d3e9d4bba8faa914f8e433, type: 3}
@ -15133,11 +15463,11 @@ Transform:
m_GameObject: {fileID: 1965855875}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 23.24445, y: 4.240566, z: 0.034816958}
m_LocalPosition: {x: 23.244453, y: 4.240566, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &1965855877
SpriteRenderer:
@ -15230,11 +15560,11 @@ Transform:
m_GameObject: {fileID: 2002855134}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 14.281883, y: 4.0687256, z: 0.034816958}
m_LocalPosition: {x: 14.281883, y: 4.0687256, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &2002855136
SpriteRenderer:
@ -15372,11 +15702,11 @@ Transform:
m_GameObject: {fileID: 2057076526}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 9.023533, y: 3.3683114, z: 0.034816958}
m_LocalPosition: {x: 9.023533, y: 3.3683114, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 1918398180}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2073324771
GameObject:
@ -15665,11 +15995,11 @@ Transform:
m_GameObject: {fileID: 2137872386}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 3.8719902, y: 1.8787003, z: 0.034816958}
m_LocalPosition: {x: 3.8719902, y: 1.8787003, z: 0.03481695}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2144574669}
m_Father: {fileID: 884524461}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2144574668
GameObject:
@ -15696,33 +16026,12 @@ Transform:
m_GameObject: {fileID: 2144574668}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 49.44259, y: 2.5177584, z: 0.095104694}
m_LocalPosition: {x: 49.44259, y: 0.2, z: 0.095104694}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 297593551}
- {fileID: 1865345060}
- {fileID: 835876320}
- {fileID: 1705686278}
- {fileID: 1672719339}
- {fileID: 816693761}
- {fileID: 283678865}
- {fileID: 1006087432}
- {fileID: 1447080356}
- {fileID: 492283477}
- {fileID: 44905403}
- {fileID: 2137872388}
- {fileID: 738926878}
- {fileID: 2057076528}
- {fileID: 1719152190}
- {fileID: 2002855135}
- {fileID: 212206181}
- {fileID: 574260393}
- {fileID: 1965855876}
- {fileID: 1914778550}
- {fileID: 301459644}
- {fileID: 167495490}
- {fileID: 47229778}
- {fileID: 884524461}
- {fileID: 1918398180}
m_Father: {fileID: 1053302775}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &802583396369401714
@ -15787,7 +16096,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 3753334954579875121, guid: c89f36ea52da92447be55c6f344acee8, type: 3}
propertyPath: parallaxFactorX
value: 0.75
value: 0.6
objectReference: {fileID: 0}
- target: {fileID: 9047623735812724493, guid: c89f36ea52da92447be55c6f344acee8, type: 3}
propertyPath: m_LocalPosition.x
@ -15834,63 +16143,6 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: c89f36ea52da92447be55c6f344acee8, type: 3}
--- !u!1001 &1505499247083726672
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 3337760321077376333, guid: 4b0988a0068aee641a67f8aad32863f8, type: 3}
propertyPath: m_Name
value: Main Camera
objectReference: {fileID: 0}
- target: {fileID: 6610716452841154070, guid: 4b0988a0068aee641a67f8aad32863f8, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6610716452841154070, guid: 4b0988a0068aee641a67f8aad32863f8, type: 3}
propertyPath: m_LocalPosition.y
value: 1.3
objectReference: {fileID: 0}
- target: {fileID: 6610716452841154070, guid: 4b0988a0068aee641a67f8aad32863f8, type: 3}
propertyPath: m_LocalPosition.z
value: -10
objectReference: {fileID: 0}
- target: {fileID: 6610716452841154070, guid: 4b0988a0068aee641a67f8aad32863f8, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6610716452841154070, guid: 4b0988a0068aee641a67f8aad32863f8, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6610716452841154070, guid: 4b0988a0068aee641a67f8aad32863f8, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6610716452841154070, guid: 4b0988a0068aee641a67f8aad32863f8, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6610716452841154070, guid: 4b0988a0068aee641a67f8aad32863f8, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6610716452841154070, guid: 4b0988a0068aee641a67f8aad32863f8, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6610716452841154070, guid: 4b0988a0068aee641a67f8aad32863f8, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 4b0988a0068aee641a67f8aad32863f8, type: 3}
--- !u!1001 &5189102261111869253
PrefabInstance:
m_ObjectHideFlags: 0
@ -15905,7 +16157,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 1452460312376183192, guid: 7fd3a37dc702ece42b51e5867473f0ff, type: 3}
propertyPath: m_LocalPosition.y
value: 4.2426214
value: 2
objectReference: {fileID: 0}
- target: {fileID: 1452460312376183192, guid: 7fd3a37dc702ece42b51e5867473f0ff, type: 3}
propertyPath: m_LocalPosition.z
@ -16018,7 +16270,7 @@ PrefabInstance:
SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 1505499247083726672}
- {fileID: 601953095}
- {fileID: 1500894798}
- {fileID: 1053302775}
- {fileID: 8856198965438284572}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1595,6 +1595,75 @@ Transform:
m_CorrespondingSourceObject: {fileID: 7794497313669146320, guid: 2476b7fff96627f439721703c5d2e9a3, type: 3}
m_PrefabInstance: {fileID: 1981575236}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &227400208
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 1219275281515896867, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1219275281515896867, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1219275281515896867, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalPosition.x
value: 1.762578
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalPosition.y
value: 0.44624943
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalPosition.z
value: -18.56041
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5427100241935526094, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5670642228506106635, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
propertyPath: m_Name
value: Camera
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: ff70cd57edcbc3c439493cb8c61b9072, type: 3}
--- !u!1001 &237213560
PrefabInstance:
m_ObjectHideFlags: 0
@ -2977,7 +3046,6 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 9147940328234548893}
- {fileID: 611689270}
- {fileID: 1580887160}
- {fileID: 1147534013}
- {fileID: 1985269007}
@ -3873,11 +3941,6 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!4 &611689270 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 566033136593361935, guid: ab23b26a9910d684baf2634211134ca6, type: 3}
m_PrefabInstance: {fileID: 1229370956}
m_PrefabAsset: {fileID: 0}
--- !u!1 &622623932
GameObject:
m_ObjectHideFlags: 0
@ -8119,7 +8182,7 @@ PrefabInstance:
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 484734725}
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 566033136593361935, guid: ab23b26a9910d684baf2634211134ca6, type: 3}
propertyPath: m_LocalPosition.x
@ -8127,11 +8190,11 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 566033136593361935, guid: ab23b26a9910d684baf2634211134ca6, type: 3}
propertyPath: m_LocalPosition.y
value: 1.3
value: 0
objectReference: {fileID: 0}
- target: {fileID: 566033136593361935, guid: ab23b26a9910d684baf2634211134ca6, type: 3}
propertyPath: m_LocalPosition.z
value: 0
value: -9.184271
objectReference: {fileID: 0}
- target: {fileID: 566033136593361935, guid: ab23b26a9910d684baf2634211134ca6, type: 3}
propertyPath: m_LocalRotation.w
@ -8139,15 +8202,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 566033136593361935, guid: ab23b26a9910d684baf2634211134ca6, type: 3}
propertyPath: m_LocalRotation.x
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 566033136593361935, guid: ab23b26a9910d684baf2634211134ca6, type: 3}
propertyPath: m_LocalRotation.y
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 566033136593361935, guid: ab23b26a9910d684baf2634211134ca6, type: 3}
propertyPath: m_LocalRotation.z
value: 0
value: -0
objectReference: {fileID: 0}
- target: {fileID: 566033136593361935, guid: ab23b26a9910d684baf2634211134ca6, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@ -12714,160 +12777,6 @@ Transform:
m_CorrespondingSourceObject: {fileID: 2347305776405518860, guid: 67e6c76bc4c4797499f5b2a55fc7ab4a, type: 3}
m_PrefabInstance: {fileID: 2048130320}
m_PrefabAsset: {fileID: 0}
--- !u!1 &2073843345
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2073843348}
- component: {fileID: 2073843347}
- component: {fileID: 2073843346}
- component: {fileID: 2073843350}
- component: {fileID: 2073843349}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &2073843346
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2073843345}
m_Enabled: 1
--- !u!20 &2073843347
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2073843345}
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: 1
orthographic size: 7
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 &2073843348
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2073843345}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1.3, z: -10}
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!114 &2073843349
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2073843345}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b90fe4c0ad927154c88644503fbb00a3, type: 3}
m_Name:
m_EditorClassIdentifier:
damping: 1.5
offset: {x: 2, y: 1}
faceLeft: 0
snapOnFound: 1
--- !u!114 &2073843350
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2073843345}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_RenderShadows: 1
m_RequiresDepthTextureOption: 2
m_RequiresOpaqueTextureOption: 2
m_CameraType: 0
m_Cameras: []
m_RendererIndex: -1
m_VolumeLayerMask:
serializedVersion: 2
m_Bits: 1
m_VolumeTrigger: {fileID: 0}
m_VolumeFrameworkUpdateModeOption: 2
m_RenderPostProcessing: 0
m_Antialiasing: 0
m_AntialiasingQuality: 2
m_StopNaN: 0
m_Dithering: 0
m_ClearDepth: 1
m_AllowXRRendering: 1
m_AllowHDROutput: 1
m_UseScreenCoordOverride: 0
m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0}
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
m_TaaSettings:
m_Quality: 3
m_FrameInfluence: 0.1
m_JitterScale: 1
m_MipBias: 0
m_VarianceClampScale: 0.9
m_ContrastAdaptiveSharpening: 0
--- !u!1001 &2074392938
PrefabInstance:
m_ObjectHideFlags: 0
@ -77819,7 +77728,7 @@ GameObject:
- component: {fileID: 6180803786108508}
- component: {fileID: 4324911825383872963}
- component: {fileID: 6011941511199700432}
m_Layer: 0
m_Layer: 6
m_Name: Tilemap_Ground
m_TagString: Ground
m_Icon: {fileID: 0}
@ -77862,8 +77771,9 @@ Transform:
SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 2073843348}
- {fileID: 227400208}
- {fileID: 1953826211}
- {fileID: 484734725}
- {fileID: 381089772}
- {fileID: 1229588811}
- {fileID: 1229370956}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +0,0 @@
using UnityEngine;
public interface IBouncy
{
public bool TryBounce(Collision2D collision);
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 847009d73357dff4b9eecc3544331c9a

View File

@ -1,12 +0,0 @@
using UnityEngine;
public interface ILauchable
{
/// <summary>
/// Метод для запуска объекта как снаряд
/// </summary>
/// <param name="direction">Направление запуска</param>
/// <param name="speed">Скорость запуска</param>
/// <param name="owner">Владелец</param>
public void Launch(Vector2 direction, float speed, GameObject owner);
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 81cf0790d7ea99d42808e924b32bf042

View File

@ -1,6 +0,0 @@
using UnityEngine;
public interface IPickable
{
public bool TryPickup(GameObject newOwner, Transform attachPoint = null);
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 0dcc6d4619228494fac3da9f768fb2cb

View File

@ -1,4 +0,0 @@
public interface IRecallable
{
public void Recall();
}

View File

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: cf6adbb036b554543bbd9c373ce32a67

View File

@ -0,0 +1,53 @@
using UnityEngine;
namespace RR.Common.Interfaces
{
public interface IRecallable
{
/// <summary>
/// Метод для возвращения объекта к владельцу.
/// Для возвращения желательно иметь на объекте
/// <see cref="GameObject"/> owner или аналогичный атрибут
/// </summary>
public void Recall();
}
public interface IPickable
{
/// <summary>
/// Метод для подбора объекта игроком.
/// Привязывает снаряд к точке привязки на игроке.
/// </summary>
/// <param name="newOwner">Новый владелец объекта</param>
/// <param name="optionaAttachPoint">Опциональная точка привязки. При передаче, объект будет привязан на нее</param>
/// <returns>bool - получилось ли поднять объект</returns>
public bool TryPickup(GameObject newOwner, Transform optionaAttachPoint = null);
}
}
namespace RR.Game2D.Core.Interfaces
{
public interface ILauchable
{
/// <summary>
/// Метод для запуска объекта как снаряд
/// </summary>
/// <param name="direction">Направление запуска</param>
/// <param name="speed">Скорость запуска</param>
/// <param name="owner">Владелец</param>
public void Launch(Vector2 direction, float speed, GameObject owner);
}
public interface IBouncy
{
/// <summary>
/// Метод для просчета отскоков.
/// </summary>
/// <param name="collision">Коллизия, с которой столкнулся объект</param>
/// <returns>bool - произошел ли отскок</returns>
public bool TryBounce(Collision2D collision);
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: ca0eec286a0beba4e9f877ad5dfc0833

View File

@ -16,7 +16,7 @@ namespace RR.Game2D.Core
previousCameraPosition = cameraTransform.position;
}
void LateUpdate()
void FixedUpdate()
{
Vector3 delta = cameraTransform.position - previousCameraPosition;
if (lockYAxis)

View File

@ -3,32 +3,32 @@ using UnityEngine;
namespace RR.Game2D.Core
{
public class CameraFollow2D : MonoBehaviour
public class CameraFollow : MonoBehaviour
{
[Header("Follow")]
[SerializeField, Min(0)] private float damping = 1.5f;
[SerializeField] private Vector2 offset = new(2f, 1f);
[SerializeField] private bool faceLeft;
[SerializeField, Min(0)] protected float damping = 1.5f;
[SerializeField] protected Vector2 offset = new(2f, 1f);
[SerializeField] protected bool faceLeft;
[Header("Behaviour")]
[SerializeField] private bool snapOnFound = true;
[SerializeField] protected bool snapOnFound = true;
private Transform player;
private float lastX;
private Coroutine bindRoutine;
protected Transform player;
//private float lastX;
protected Coroutine bindRoutine;
void OnEnable()
private void OnEnable()
{
offset = new Vector2(Mathf.Abs(offset.x), offset.y);
bindRoutine = StartCoroutine(BindLoop());
}
void OnDisable()
private void OnDisable()
{
if (bindRoutine != null) { StopCoroutine(bindRoutine); bindRoutine = null; }
}
void FixedUpdate()
private void FixedUpdate()
{
if (!player) return; // ждём появления
@ -36,7 +36,7 @@ namespace RR.Game2D.Core
//if (currentX > lastX + 0.01f) faceLeft = false;
//else if (currentX < lastX - 0.01f) faceLeft = true;
faceLeft = Mathf.Abs(player.localEulerAngles.y) >= 180 ? true : false;
lastX = currentX;
//lastX = currentX;
Vector3 target = player.position;
target.x += faceLeft ? -offset.x : +offset.x;
@ -59,7 +59,7 @@ namespace RR.Game2D.Core
if (t)
{
player = t;
lastX = player.position.x;
//lastX = player.position.x;
if (snapOnFound) SnapToPlayer(faceLeft);
}
}
@ -73,7 +73,7 @@ namespace RR.Game2D.Core
/// затем, ели не нашел, то ищет по тегу на сцене
/// </summary>
/// <returns>Transform playerPosition - позиция игрокка</returns>
private Transform ResolvePlayer()
protected virtual Transform ResolvePlayer()
{
if (GameManager.Instance && GameManager.Instance.PlayerObj)
return GameManager.Instance.PlayerObj.transform;
@ -86,7 +86,7 @@ namespace RR.Game2D.Core
/// Метод для поиска игрока и привязки к нему камеры.
/// </summary>
/// <param name="playerFaceLeft">Повернут ли игрок налево</param>
public void FindPlayer(bool playerFaceLeft)
public virtual void FindPlayer(bool playerFaceLeft)
{
faceLeft = playerFaceLeft;
player = ResolvePlayer();
@ -95,7 +95,7 @@ namespace RR.Game2D.Core
Debug.Log("CameraFollow2D: player not found yet, will wait.");
return;
}
lastX = player.position.x;
//lastX = player.position.x;
SnapToPlayer(faceLeft);
}

View File

@ -0,0 +1,45 @@
using RR.Game2D.Core;
using Unity.Cinemachine;
using UnityEngine;
public class FollowPlayer : MonoBehaviour
{
[SerializeField] float interpolationTime = 10f;
[SerializeField] Vector3 offset = new(6, 3, -20);
private GameObject tPlayer;
private Transform tFollowTarget;
private CinemachineCamera vcam;
private CinemachineFollow followScript;
private bool playerFacedLeft = false;
void Start()
{
vcam = GetComponent<CinemachineCamera>();
followScript = GetComponent<CinemachineFollow>();
if (tPlayer == null)
{
tPlayer = GameManager.Instance.PlayerObj;
if (tPlayer == null) tPlayer = GameObject.FindWithTag("Player");
}
}
void FixedUpdate()
{
if (tPlayer != null)
{
tFollowTarget = tPlayer.transform;
vcam.LookAt = tFollowTarget;
vcam.Follow = tFollowTarget;
playerFacedLeft = Mathf.Abs(tPlayer.transform.localEulerAngles.y) >= 180f;
//Debug.Log($"Faced left: {playerFacedLeft}");
Vector3 cameraOffset = followScript.FollowOffset;
cameraOffset.x = playerFacedLeft ? -offset.x : offset.x;
followScript.FollowOffset = Vector3.Lerp(followScript.FollowOffset, cameraOffset, Time.deltaTime);
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: af1b9ff67ef498c43a823d7829b14644

View File

@ -0,0 +1,96 @@
using System;
using UnityEngine;
namespace RR.Game2D.Behaviour
{
[RequireComponent(typeof(BoxCollider2D))]
public class JumpPad2D : MonoBehaviour
{
[SerializeField] private float verticalBand = 0.5f;
private BoxCollider2D col;
public Action<GameObject> PlayerJumped;
private void Awake()
{
col = GetComponent<BoxCollider2D>();
if (!col.isTrigger)
col.isTrigger = true;
}
//private void OnTriggerEnter2D(Collider2D other)
//{
// var d = col.Distance(other);
// Vector2 contactMid = (d.pointA + d.pointB) * 0.5f;
// bool topByNormal = IsTopByNormal(col, d.normal, maxAngleDeg: 30f);
// bool topByBox = false;
// if (col is BoxCollider2D box)
// topByBox = IsTopByLocalY(box, contactMid, bandPercent: bandPercent);
// bool isTopContact = topByNormal || topByBox;
// if (isTopContact)
// {
// if (other.CompareTag("Player"))
// {
// PlayerController playerController = other.GetComponent<PlayerController>();
// Rigidbody2D playerRB = other.GetComponent<Rigidbody2D>();
// Vector2 newPlayerVelocity = playerRB.linearVelocity;
// newPlayerVelocity.y = playerController.jumpVelocity;
// playerRB.linearVelocity = newPlayerVelocity;
// }
// }
// //var distance = col.Distance(collision);
// //Vector2 localPoint = col.transform.InverseTransformPoint(distance.pointA);
// //float halfHeight = col.size.y * 0.5f;
// //float topY = col.offset.y * halfHeight;
// //float band = Mathf.Max(0.001f, col.size.y * bandPercent);
//}
private void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
PlayerController playerController = other.GetComponent<PlayerController>();
Rigidbody2D playerRB = other.GetComponent<Rigidbody2D>();
if (Mathf.Abs(other.transform.position.y - col.bounds.max.y) <= verticalBand)
{
Vector2 newPlayerVelocity = playerRB.linearVelocity;
newPlayerVelocity.y = playerController.jumpVelocity;
playerRB.linearVelocity = newPlayerVelocity;
PlayerJumped?.Invoke(other.gameObject);
}
}
}
//public static bool IsTopByNormal(Collider2D myCol, Vector2 contactNormal, float maxAngleDeg = 30f)
//{
// var up = (Vector2)myCol.transform.up;
// float cos = Vector2.Dot(contactNormal.normalized, up);
// float cosThresh = Mathf.Cos(maxAngleDeg * Mathf.Deg2Rad);
// return cos >= cosThresh;
//}
//public static bool IsTopByLocalY(BoxCollider2D box, Vector2 worldPoint, float bandPercent = 0.1f)
//{
// // Локальная точка
// Vector2 pLocal = box.transform.InverseTransformPoint(worldPoint);
// // Верхняя кромка в локальных координатах с учётом offset
// float halfH = box.size.y * 0.5f;
// float topY = box.offset.y + halfH;
// // Ширина допустимого пояска (процент от высоты коробки)
// float band = Mathf.Max(0.001f, box.size.y * bandPercent);
// return pLocal.y >= (topY - band);
//}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: c8be6d7cf582ed04788ea190549fbd11

View File

@ -4,6 +4,7 @@ using RR.Game2D.Entities.Projectiles;
namespace RR.Game2D.Behaviour
{
[RequireComponent(typeof(Collider2D))]
public class PlayerFireScript : MonoBehaviour
{
[Header("Управление")]
@ -15,14 +16,17 @@ namespace RR.Game2D.Behaviour
[Header("Бросок / Подбор")]
[SerializeField] private float throwSpeed = 20f;
[SerializeField] private Vector2 launchAxis;
[SerializeField] public Transform attachPoint;
private PickableProjectile pickableProjectile;
private Collider2D col;
void Awake()
{
if (!attachPoint)
Debug.LogWarning("PlayerFireScript: attachPoint не задан. Будет использован корень игрока.");
col = GetComponent<Collider2D>();
}
void Update()
@ -56,15 +60,18 @@ namespace RR.Game2D.Behaviour
/// </summary>
private void Throw()
{
launchAxis = launchAxis.normalized;
float facing = Mathf.Abs(transform.localEulerAngles.y) >= 180 ? -1 : 1;
Vector2 direction = facing > 0 ? Vector2.right : Vector2.left;
Vector2 launchPos = (Vector2)transform.position + new Vector2(1.4f * facing, 0);
Vector2 directionX = facing > 0 ? Vector2.right : Vector2.left;
Vector2 launchPos = new (1.4f * facing + transform.position.x, col.bounds.center.y);
launchAxis.x = launchAxis.x == 0 ? launchAxis.x : directionX.x;
Vector3 projectileScale = pickableProjectile.transform.localScale;
pickableProjectile.transform.localScale = new Vector3(Mathf.Abs(projectileScale.x) * -facing, projectileScale.y, projectileScale.z);
pickableProjectile.transform.position = launchPos;
pickableProjectile.Launch(direction, throwSpeed, gameObject);
pickableProjectile.Launch(launchAxis, throwSpeed, gameObject);
}
/// <summary>

View File

@ -1,41 +1,43 @@
using UnityEngine;
//[ExecuteAlways]
public class Oscillator : MonoBehaviour
namespace RR.Common.Behaviour
{
[Header("Motion")]
[SerializeField] private Vector3 localAxis = Vector3.forward;
[SerializeField, Min(0f)] private float amplitude = 20f;
[SerializeField, Min(0f)] public float frequency = 1f;
[SerializeField] private float phaseOffsetDeg = 0f;
[SerializeField] private bool randomizePhaseOnEnable = false;
[SerializeField] private bool useUnscaledTime = false;
[SerializeField] private bool resetBaseOnEnable = true;
private Quaternion _baseLocalRotation;
private float _phaseRad;
void Awake()
public class Oscillator : MonoBehaviour
{
_baseLocalRotation = transform.localRotation;
_phaseRad = phaseOffsetDeg * Mathf.Deg2Rad;
}
[Header("Motion")]
[SerializeField] private Vector3 localAxis = Vector3.forward;
[SerializeField, Min(0f)] private float amplitude = 20f;
[SerializeField, Min(0f)] public float frequency = 1f;
[SerializeField] private float phaseOffsetDeg = 0f;
[SerializeField] private bool randomizePhaseOnEnable = false;
[SerializeField] private bool useUnscaledTime = false;
[SerializeField] private bool resetBaseOnEnable = true;
void OnEnable()
{
if (resetBaseOnEnable)
private Quaternion _baseLocalRotation;
private float _phaseRad;
void Awake()
{
_baseLocalRotation = transform.localRotation;
_phaseRad = phaseOffsetDeg * Mathf.Deg2Rad;
}
if (randomizePhaseOnEnable)
_phaseRad = Random.value * Mathf.PI * 2f;
}
void OnEnable()
{
if (resetBaseOnEnable)
_baseLocalRotation = transform.localRotation;
void Update()
{
Vector3 axis = localAxis.sqrMagnitude > 1e-6f ? localAxis.normalized : Vector3.forward;
float t = useUnscaledTime ? Time.unscaledTime : Time.time;
if (randomizePhaseOnEnable)
_phaseRad = Random.value * Mathf.PI * 2f;
}
float angle = amplitude * Mathf.Sin(2f * Mathf.PI * frequency * t + _phaseRad);
transform.localRotation = _baseLocalRotation * Quaternion.AngleAxis(angle, axis);
void Update()
{
Vector3 axis = localAxis.sqrMagnitude > 1e-6f ? localAxis.normalized : Vector3.forward;
float t = useUnscaledTime ? Time.unscaledTime : Time.time;
float angle = amplitude * Mathf.Sin(2f * Mathf.PI * frequency * t + _phaseRad);
transform.localRotation = _baseLocalRotation * Quaternion.AngleAxis(angle, axis);
}
}
}

View File

@ -21,7 +21,7 @@ namespace RR.Game2D.Core
public int World { get; private set; } = 1;
public int Stage { get; private set; } = 1;
public int StagesByWorld { get; private set; } = 5;
public int Lives { get; private set; } = 3;
public int Lives { get; set; } = 3;
public int Coins { get; private set; } = 0;
[Header("Игрок")]

View File

@ -20,41 +20,46 @@ namespace RR.Game2D.Behaviour
[SerializeField] private float decel = 20f;
[Header("Вертикальное движение")]
[SerializeField] private float maxJumpHeight = 5f;
[SerializeField] private float jumpCooldown = 0.1f;
[SerializeField] private float jumpBuffer = 0.1f;
[SerializeField, Range(0f, 1f)] private float jumpCut = 0.5f;
[SerializeField] public float jumpVelocity = 50f;
[SerializeField] private float jumpCut = 2f;
private Rigidbody2D rb;
private Collider2D col;
float inputX;
float lastGroundedTime;
float lastJumpPressedTime;
bool IsGrounded => Grounded();
[Header("Проверка призмеления")]
[SerializeField] private Transform groundCheck;
[SerializeField] private float groundCheckRadius = 0.05f;
[SerializeField] private LayerMask groundMask;
[Header("Аниматор [Опционально]")]
[SerializeField] private Animator animator; // оставить в инспекторе на всякий случай
[Header("Настройки для уровней")]
[SerializeField] private float deathY = -5f;
private Rigidbody2D rb;
//private Collider2D col;
private float inputX;
private bool jumpPressed, jumpReleased, jumpHold;
bool IsGrounded => Grounded();
void OnEnable()
{
moveAction?.action.Enable();
jumpAction?.action.Enable();
moveAction.action.Enable();
jumpAction.action.Enable();
}
void OnDisable()
{
moveAction?.action.Disable();
jumpAction?.action.Disable();
moveAction.action.Disable();
jumpAction.action.Disable();
}
void Awake()
{
rb = GetComponent<Rigidbody2D>();
col = GetComponent<Collider2D>();
//col = GetComponent<Collider2D>();
rb.freezeRotation = true;
lastJumpPressedTime = -999f;
// если не задано в инспекторе — находим автоматически
if (animator == null)
@ -68,62 +73,46 @@ namespace RR.Game2D.Behaviour
void Update()
{
//// Передвижение
//inputX = Input.GetAxisRaw("Horizontal");
////if (Input.GetButtonDown("Jump"))
//// lastJumpPressedTime = Time.time;
//if (Input.GetButton("Jump"))
// lastJumpPressedTime = Time.time;
//if (Input.GetButtonUp("Jump")) // && rb.linearVelocity.y > 0f)
// rb.linearVelocity = new Vector2(rb.linearVelocity.x, rb.linearVelocity.y * jumpCut);
// --- Ввод ---
Vector2 move = moveAction ? moveAction.action.ReadValue<Vector2>() : Vector2.zero;
inputX = Mathf.Abs(move.x) > 0.01f ? Mathf.Sign(move.x) : 0f;
if (jumpAction && jumpAction.action.IsPressed())
lastJumpPressedTime = Time.time;
if (jumpAction && jumpAction.action.WasReleasedThisFrame())
rb.linearVelocity = new Vector2(rb.linearVelocity.x, rb.linearVelocity.y * jumpCut);
jumpPressed |= jumpAction.action.WasPressedThisFrame();
jumpReleased |= jumpAction.action.WasReleasedThisFrame();
jumpHold |= jumpAction.action.IsPressed();
if (inputX != 0f)
transform.localEulerAngles = Mathf.Sign(inputX) > 0 ? Vector3.zero : new Vector3(0, 180f, 0);
if (IsGrounded) lastGroundedTime = Time.time;
// Данные для анимаций
// --- Анимации ---
animator.SetFloat("Speed", Mathf.Abs(rb.linearVelocity.x));
animator.SetFloat("VSpeed", rb.linearVelocity.y);
animator.SetBool("Grounded", IsGrounded);
}
void FixedUpdate()
private void FixedUpdate()
{
// Горизонтальное движение
float target = inputX * moveSpeed;
float rate = (Mathf.Abs(target) > 0.01f) ? accel : decel;
float vx = Mathf.MoveTowards(rb.linearVelocity.x, target, rate * Time.fixedDeltaTime);
float rate = (Mathf.Abs(target) > 0.01) ? accel : decel;
float velocityX = Mathf.MoveTowards(rb.linearVelocity.x, target, rate * Time.fixedDeltaTime);
if (transform.position.y < -5) Die();
Vector2 newVelocity = rb.linearVelocity;
newVelocity.x = velocityX;
// Возможность прыжка
bool canJump = (Time.time - lastGroundedTime) <= jumpCooldown;
bool wantJump = (Time.time - lastJumpPressedTime) <= jumpBuffer;
// Вертикальное движение
if ((jumpPressed || jumpHold)&& IsGrounded)
newVelocity.y = jumpVelocity;
if (wantJump && canJump && IsGrounded)
{
float vy = CalcJumpSpeed(maxJumpHeight);
rb.linearVelocity = new Vector2(vx, vy);
animator.SetBool("Jump", true);
lastJumpPressedTime = -999f;
return;
}
if (jumpReleased && newVelocity.y > 0)
newVelocity.y /= Mathf.Max(1f, jumpCut);
rb.linearVelocity = new Vector2(vx, rb.linearVelocity.y);
rb.linearVelocity = newVelocity;
jumpPressed = jumpReleased = jumpHold = false;
// Смерть
if (transform.position.y < deathY) Die();
}
private void OnTriggerEnter2D(Collider2D collision)
@ -142,27 +131,16 @@ namespace RR.Game2D.Behaviour
//private void OnDestroy() => Debug.Log("Player destroyed");
/// <summary>
/// Метод для просчитывания скорости прыжка с учетом высоты прыжка
/// </summary>
/// <param name="height">Высота прыжка (высшая точка по y)</param>
/// <returns>float jumpSpeed - высчитанная скорость прыжка</returns>
float CalcJumpSpeed(float height)
{
float g = Physics2D.gravity.y * rb.gravityScale;
return Mathf.Sqrt(-2f * g * height);
}
/// <summary>
/// Метод для проверки соприкосновения с землей
/// </summary>
/// <returns>bool isGrounded - на земле ли игрок</returns>
bool Grounded()
{
RaycastHit2D hit = Physics2D.CircleCast(new Vector2(col.bounds.center.x, col.bounds.min.y), 0.01f, Vector2.down, 0.1f);
bool isGrounded = hit.collider != null && hit.collider.CompareTag("Ground");
Collider2D hit = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, groundMask);
bool isGrounded = hit != null
&& hit.CompareTag("Ground");
//&& rb.linearVelocity.y < 0.01f;
animator.SetBool("Jump", !isGrounded);

View File

@ -17,10 +17,8 @@ namespace RR.Game2D.Entities.Projectiles
{
var player = GameManager.Instance.PlayerObj;
Debug.Log("EnemyProjectile collision");
if (target.collider.CompareTag("Player"))
{
Debug.Log("Collision is Player");
player.GetComponent<PlayerController>().Die();
}
else if (target.collider.CompareTag("Projectile") || target.collider.CompareTag("Enemy"))

View File

@ -1,12 +1,14 @@
using UnityEngine;
using RR.Common.Interfaces;
using RR.Game2D.Core;
using RR.Game2D.Behaviour;
using RR.Game2D.Core.Interfaces;
namespace RR.Game2D.Entities.Projectiles
{
[DisallowMultipleComponent]
[RequireComponent(typeof(Rigidbody2D),
typeof(Collider2D))]
typeof(CapsuleCollider2D))]
public class PickableProjectile : PhysicsProjectile, IPickable, IBouncy, IRecallable
{
public static PickableProjectile Instance { get; private set; }
@ -20,7 +22,8 @@ namespace RR.Game2D.Entities.Projectiles
[SerializeField] private float ignoreOwnerTimeOnThrow = 0.1f;
[Header("Приземление")]
[SerializeField] private float groundVelocity = 0.1f;
[SerializeField] private float groundVelocity = 1f;
[SerializeField] private float maxGroundSlideTime = 1f;
[SerializeField] private bool lockWhenLanded = true;
[Header("Отскоки")]
@ -29,11 +32,10 @@ namespace RR.Game2D.Entities.Projectiles
[SerializeField] private float stickDelayAfterImpact = 0.03f;
[Header("Возврат")]
[Tooltip("Старт возврата, если дальше этой дистанции от точки руки.")]
[SerializeField] private float recallStartDistance = 8f;
[Tooltip("На этой дистанции от руки считаем, что прилетел и подбираем.")]
[SerializeField, Range(0, 100)] int recallScreenMarginPercent = 5;
[SerializeField] private float recallArriveDistance = 1f;
[SerializeField] private float recallSpeed = 16f;
[SerializeField] private float recallStartDistance = 8f;
[Header("Gizmos")]
[SerializeField] private bool drawGizmos;
@ -46,6 +48,9 @@ namespace RR.Game2D.Entities.Projectiles
private bool hadBeenHeld = false;
private GameObject lastKnownHolder;
private float lastGroundTouchTime;
private GameObject jumpPad;
// -------------------------------------------
// Методы Unity
@ -56,7 +61,10 @@ namespace RR.Game2D.Entities.Projectiles
//---------------------------
protected override void Awake()
{
base.Awake();
rb = GetComponent<Rigidbody2D>();
col = GetComponent<CapsuleCollider2D>();
col.isTrigger = true;
if (Instance != null && Instance != this)
{
@ -65,11 +73,22 @@ namespace RR.Game2D.Entities.Projectiles
}
Instance = this;
jumpPad = new GameObject("Projectile Jump Pad");
jumpPad.AddComponent<BoxCollider2D>();
jumpPad.AddComponent<JumpPad2D>();
jumpPad.GetComponent<BoxCollider2D>().isTrigger = true;
Vector3 jumpPadScale = jumpPad.transform.localScale;
jumpPadScale.y = 0.1f;
jumpPad.transform.localScale = jumpPadScale;
jumpPad.SetActive(false);
jumpPad.GetComponent<JumpPad2D>().PlayerJumped += OnPlayerJumped;
}
private void OnDestroy()
{
if (Instance == this) Instance = null;
Destroy(jumpPad);
}
//---------------------------
//
@ -84,11 +103,6 @@ namespace RR.Game2D.Entities.Projectiles
BecomeGrounded();
}
//private void Update()
//{
// Debug.Log(CurrentState);
//}
protected override void FixedUpdate()
{
base.FixedUpdate();
@ -109,30 +123,6 @@ namespace RR.Game2D.Entities.Projectiles
Recall();
}
//protected override void OnCollisionEnter2D(Collision2D collision)
//{
// var otherRb = collision.rigidbody ? collision.rigidbody : collision.otherRigidbody;
// var otherGO = (collision.collider ? collision.collider.attachedRigidbody?.gameObject : null)
// ?? otherRb?.gameObject
// ?? collision.gameObject;
// if (otherGO && otherGO.CompareTag("Player") && CurrentState != State.Held)
// {
// if (TryPickup(otherGO)) return;
// }
// base.OnCollisionEnter2D(collision);
// if (CurrentState == State.Airborne)
// {
// if (TryBounce(collision))
// lastImpactTime = Time.time;
// else
// BecomeGrounded(collision);
// }
//}
protected override void OnCollisionEnter2D(Collision2D collision)
{
var otherRb = collision.rigidbody ? collision.rigidbody : collision.otherRigidbody;
@ -145,7 +135,9 @@ namespace RR.Game2D.Entities.Projectiles
if (TryPickup(otherGO)) return;
}
base.OnCollisionEnter2D(collision);
if (!IsInHitLayer(collision.collider.gameObject.layer)) return;
Vector2 point = collision.GetContact(0).point;
OnHit(collision, point, collision.relativeVelocity);
if (CurrentState == State.Airborne)
{
@ -157,8 +149,32 @@ namespace RR.Game2D.Entities.Projectiles
BecomeGrounded();
}
if (collision.collider.CompareTag("Ground"))
lastGroundTouchTime = Time.time;
}
private void OnCollisionStay2D(Collision2D collision)
{
if (collision.collider.CompareTag("Ground"))
{
if (Time.time - lastGroundTouchTime > maxGroundSlideTime)
BecomeGrounded();
}
}
protected override void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
if (TryPickup(other.gameObject)) return;
}
else
{
base.OnTriggerEnter2D(other);
}
}
//
//
// -------------------------------------------
@ -169,15 +185,9 @@ namespace RR.Game2D.Entities.Projectiles
protected override void OnHit(Collision2D collision, Vector2 point, Vector2 relativeVelocity)
{
TryDealDamage(collision.collider, point, relativeVelocity);
//TryDealDamage(collision.collider, point, relativeVelocity);
PlayFX(point);
//if (remainingPierce > 0)
//{
// remainingPierce--;
// return;
//}
OnImpactFinal(collision);
}
@ -201,45 +211,39 @@ namespace RR.Game2D.Entities.Projectiles
// Подбор
//
/// <summary>
/// Метод для подбора снаряда игроком.
/// Привязывает снаряд к точке привязки на игроке.
/// </summary>
/// <param name="newHolder">Держатель снаряда</param>
/// <param name="optionalAttachPoint">Опциональная точка привязки. При передаче, снаряд будет привязан на нее</param>
/// <returns>bool isPickedUp - получилось ли поднять снаряд</returns>
public bool TryPickup(GameObject newHolder, Transform optionalAttachPoint = null)
public bool TryPickup(GameObject newOwner, Transform optionalAttachPoint = null)
{
if (CurrentState == State.Held) return true;
owner = newHolder;
lastKnownHolder = newHolder;
owner = newOwner;
lastKnownHolder = newOwner;
holderAttachPoint = optionalAttachPoint ?? FindAttachPoint(newHolder);
var fireScript = newHolder.GetComponent<PlayerFireScript>();
holderAttachPoint = optionalAttachPoint ?? FindAttachPoint(newOwner);
var fireScript = newOwner.GetComponent<PlayerFireScript>();
if (holderAttachPoint == null && fireScript != null)
holderAttachPoint = fireScript.attachPoint;
if (holderAttachPoint == null)
holderAttachPoint = newHolder.transform;
holderAttachPoint = newOwner.transform;
rb.linearVelocity = Vector2.zero;
rb.angularVelocity = 0f;
rb.bodyType = RigidbodyType2D.Kinematic;
col.enabled = false;
transform.SetParent(holderAttachPoint);//, worldPositionStays: true); // Баг остался, но пока в комменте
transform.position = holderAttachPoint.TransformPoint(heldLocalOffset);
transform.rotation = new Quaternion(0, 90f, 0, 0);
transform.SetParent(holderAttachPoint);
transform.SetPositionAndRotation(holderAttachPoint.TransformPoint(heldLocalOffset), new Quaternion(0, 90f, 0, 0));
transform.localScale = baseLocalScale * heldScale;
if (fireScript != null) fireScript.BindProjectile(this);
StartCoroutine(IgnoreOwnerTemporarily(owner, ignoreOwnerTimeOnThrow));
//StartCoroutine(IgnoreOwnerTemporarily(owner, ignoreOwnerTimeOnThrow));
CurrentState = State.Held;
launched = false;
hadBeenHeld = true;
jumpPad.SetActive(false);
return true;
}
@ -267,14 +271,8 @@ namespace RR.Game2D.Entities.Projectiles
// Отскок
//
/// <summary>
/// Метод для просчета отскоков.
/// </summary>
/// <param name="collision">Коллизия, с которой столкнулся снаряд</param>
/// <returns>bool isBounced - произошел ли отскок</returns>
public bool TryBounce(Collision2D collision)
{
Debug.Log("TryBounce");
if (Time.time - lastImpactTime < stickDelayAfterImpact) return true;
if (bounceCounter > maxBounces) return false;
@ -307,7 +305,7 @@ namespace RR.Game2D.Entities.Projectiles
public override void Launch(Vector2 direction, float speed, GameObject throwOwner = null)
{
if (CurrentState == State.Held)
transform.SetParent(null);//, worldPositionStays: true);
transform.SetParent(null);
owner = throwOwner;
lastKnownHolder = throwOwner;
@ -315,6 +313,7 @@ namespace RR.Game2D.Entities.Projectiles
rb.bodyType = RigidbodyType2D.Dynamic;
col.enabled = true;
col.isTrigger = false;
launched = true;
@ -323,7 +322,7 @@ namespace RR.Game2D.Entities.Projectiles
rb.linearVelocity = Vector2.zero;
rb.angularVelocity = 0f;
rb.AddForce(launchDirection * finalSpeed * rb.mass, ForceMode2D.Impulse);
rb.AddForce(finalSpeed * rb.mass * launchDirection, ForceMode2D.Impulse);
transform.up = launchDirection;
transform.localScale = baseLocalScale;
@ -356,9 +355,9 @@ namespace RR.Game2D.Entities.Projectiles
var attachPoint = FindAttachPoint(playerGo);
bool isVisible = false;
bool isVisible;
var mainCamera = Camera.main;
float margin = 0.1f;
float margin = recallScreenMarginPercent / 100f;
if (mainCamera)
{
@ -389,10 +388,8 @@ namespace RR.Game2D.Entities.Projectiles
}
}
//float speed = rb.linearVelocity.magnitude;
//if (speed < 8f) speed = recallSpeed;
Vector2 dir = (dist > 0.001f) ? (toOwner / dist) : rb.linearVelocity.normalized;
rb.linearVelocity = dir * recallSpeed; //* speed;
rb.linearVelocity = dir * recallSpeed;
if (rb.linearVelocity.sqrMagnitude > 0.01f)
transform.up = rb.linearVelocity.normalized;
@ -430,8 +427,38 @@ namespace RR.Game2D.Entities.Projectiles
}
col.enabled = true;
col.isTrigger = true;
transform.SetParent(null, true);
bounceCounter = 0;
MoveJumpPad();
jumpPad.SetActive(true);
}
/// <summary>
///
/// </summary>
private void MoveJumpPad()
{
float side1 = col.bounds.size.y;
float side2 = col.bounds.size.x;
//float boxY = diagonal * Mathf.Abs(Mathf.Cos(transform.localEulerAngles.z));
Vector3 jumpPadPos = jumpPad.transform.position;
//jumpPadPos.y = boxY + transform.position.y;
jumpPadPos = transform.position;
float w = Mathf.Sqrt(side2 * side2 * Mathf.Pow(Mathf.Cos(transform.localEulerAngles.z), 2) + side1 * side1 * Mathf.Pow(Mathf.Sin(transform.localEulerAngles.z), 2));
float h = Mathf.Sqrt(side1 * side1 * Mathf.Pow(Mathf.Cos(transform.localEulerAngles.z), 2) + side2 * side2 * Mathf.Pow(Mathf.Sin(transform.localEulerAngles.z), 2));
//jumpPad.transform.localScale = new(w, h);
jumpPadPos.y = jumpPadPos.y + 0.5f * h;
jumpPad.transform.position = jumpPadPos;
}
private void OnPlayerJumped(GameObject playerObj)
{
TryPickup(playerObj);
}
//
@ -441,10 +468,12 @@ namespace RR.Game2D.Entities.Projectiles
#if UNITY_EDITOR
private void OnDrawGizmosSelected()
{
Collider2D col = GetComponent<Collider2D>();
if (!drawGizmos) return;
Gizmos.color = gizmoColor;
Gizmos.matrix = transform.localToWorldMatrix;
Gizmos.DrawCube(new Vector3(heldLocalOffset.x, heldLocalOffset.y, 0), new Vector3(0.12f, 0.12f, 0.02f));
Gizmos.matrix = col.localToWorldMatrix;
//Gizmos.DrawCube(new Vector3(heldLocalOffset.x, heldLocalOffset.y, 0), new Vector3(0.12f, 0.12f, 0.02f));
//Gizmos.DrawSphere(new Vector3(col.bounds.max.y, col.bounds.center.x, 0), 0.5f);
}
#endif
}

View File

@ -1,5 +1,6 @@
using System.Collections;
using UnityEngine;
using RR.Game2D.Core.Interfaces;
namespace RR.Game2D.Entities.Projectiles
{
@ -168,7 +169,6 @@ namespace RR.Game2D.Entities.Projectiles
/// <param name="relativeVelocity"></param>
protected virtual void OnHit(Collider2D collider, Vector2 point, Vector2 relativeVelocity)
{
Debug.Log("Projectile2D collision");
TryDealDamage(collider, point, relativeVelocity);
PlayFX(point);

View File

@ -1,59 +1,101 @@
using UnityEngine;
using UnityEngine.InputSystem;
public class FullscreenToggle : MonoBehaviour
namespace RR.Common.UI
{
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
static void Bootstrap()
public class FullscreenToggle : MonoBehaviour
{
var go = new GameObject("FullscreenToggle");
go.AddComponent<FullscreenToggle>();
DontDestroyOnLoad(go);
}
public void OnFullscreen(InputValue value)
{
if (Application.platform != RuntimePlatform.WebGLPlayer)
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
static void Bootstrap()
{
if (value.isPressed) // Проверяем нажатие кнопки
var go = new GameObject("FullscreenToggle");
go.AddComponent<FullscreenToggle>();
DontDestroyOnLoad(go);
}
private InputAction _action;
private bool _ownsAction = false;
private void OnEnable()
{
// 1) Пытаемся найти PlayerInput и экшен "Fullscreen" в его Asset
var playerInput = FindAnyPlayerInput();
var fromAsset = playerInput && playerInput.actions
? playerInput.actions.FindAction("Fullscreen", throwIfNotFound: false)
: null;
if (fromAsset != null)
{
Toggle();
_action = fromAsset;
_action.performed += OnFullscreenPerformed;
_action.Enable(); // на случай если был выключен
_ownsAction = false;
}
else
{
// 2) Нет PlayerInput/экшена — создаём локальный InputAction целиком кодом
_action = new InputAction(name: "Fullscreen", type: InputActionType.Button);
_action.AddBinding("<Keyboard>/f11");
// Alt+Enter (левый Alt)
var comp1 = _action.AddCompositeBinding("OneModifier");
comp1.With("modifier", "<Keyboard>/leftAlt");
comp1.With("binding", "<Keyboard>/enter");
// Alt+Enter (правый Alt)
var comp2 = _action.AddCompositeBinding("OneModifier");
comp2.With("modifier", "<Keyboard>/rightAlt");
comp2.With("binding", "<Keyboard>/enter");
_action.performed += OnFullscreenPerformed;
_action.Enable();
_ownsAction = true;
}
}
private void OnDisable()
{
if (_action != null)
{
_action.performed -= OnFullscreenPerformed;
if (_ownsAction) _action.Dispose();
_action = null;
_ownsAction = false;
}
}
private static PlayerInput FindAnyPlayerInput()
{
return FindFirstObjectByType<PlayerInput>();
}
// Если используешь PlayerInput в режиме Send Messages, метод с тем же именем тоже сработает:
// public void OnFullscreen(InputAction.CallbackContext ctx) { if (ctx.performed) Toggle(); }
private void OnFullscreenPerformed(InputAction.CallbackContext ctx)
{
if (ctx.performed) Toggle();
}
private static void Toggle()
{
if (Application.platform == RuntimePlatform.WebGLPlayer) return;
bool fs = !Screen.fullScreen;
Screen.fullScreenMode = fs ? FullScreenMode.FullScreenWindow : FullScreenMode.Windowed;
if (fs)
{
Screen.SetResolution(Display.main.systemWidth, Display.main.systemHeight, true);
Screen.fullScreen = true;
}
else
{
int w = Mathf.RoundToInt(Display.main.systemWidth * 0.5f);
int h = Mathf.RoundToInt(Display.main.systemHeight * 0.5f);
Screen.fullScreen = false;
Screen.SetResolution(w, h, false);
}
}
}
//void Update()
//{
// if (Application.platform != RuntimePlatform.WebGLPlayer)
// {
// var kb = Keyboard.current;
// if (kb == null) return;
// bool f11 = kb.f11Key.wasPressedThisFrame;
// bool altEnter = kb.enterKey.wasPressedThisFrame && (kb.leftAltKey.isPressed || kb.rightAltKey.isPressed);
// if (f11 || altEnter) Toggle();
// //if (Input.GetButtonDown("Fullscreen")) Toggle();
// }
//}
static void Toggle()
{
bool fs = !Screen.fullScreen;
Screen.fullScreenMode = fs ? FullScreenMode.FullScreenWindow : FullScreenMode.Windowed;
if (fs)
{
Screen.SetResolution(Display.main.systemWidth, Display.main.systemHeight, true);
Screen.fullScreen = true;
}
else
{
int w = Mathf.RoundToInt(Display.main.systemWidth * 0.5f);
int h = Mathf.RoundToInt(Display.main.systemHeight * 0.5f);
Screen.fullScreen = false;
Screen.SetResolution(w, h, false);
}
}
}

View File

@ -3,41 +3,44 @@ using UnityEngine.UI;
using TMPro;
using RR.Game2D.Core;
public class LevelButton : MonoBehaviour
namespace RR.Common.UI
{
[SerializeField] TextMeshProUGUI title;
[SerializeField] Button btn;
private int world;
private int stage;
public void Setup(string levelSceneName, int levelWorld, int levelStage)
public class LevelButton : MonoBehaviour
{
world = levelWorld;
stage = levelStage;
if (title) title.text = levelSceneName; // "1-3, 1-1 и т.д."
if (btn) { btn.onClick.RemoveAllListeners(); btn.onClick.AddListener(OnClick); }
[SerializeField] TextMeshProUGUI title;
[SerializeField] Button btn;
private int world;
private int stage;
public void Setup(string levelSceneName, int levelWorld, int levelStage)
{
world = levelWorld;
stage = levelStage;
if (title) title.text = levelSceneName; // "1-3, 1-1 и т.д."
if (btn) { btn.onClick.RemoveAllListeners(); btn.onClick.AddListener(OnClick); }
}
public void SetColor(Color newColor)
{
ColorBlock newColors = btn.colors;
newColors.normalColor = newColor;
newColors.highlightedColor = Darken(newColor, 0.90f);
newColors.selectedColor = Darken(newColor, 0.85f);
newColors.pressedColor = Darken(newColor, 0.80f);
btn.colors = newColors;
}
void OnClick()
{
// через GameManager (предпочтительно)
GameManager.Instance.LoadLevel(world, stage);
// Фоллбэк, если нужно:
// UnityEngine.SceneManagement.SceneManager.LoadScene(sceneName);
}
private static Color Darken(Color c, float factor)
=> new Color(c.r * factor, c.g * factor, c.b * factor, c.a);
}
public void SetColor(Color newColor)
{
ColorBlock newColors = btn.colors;
newColors.normalColor = newColor;
newColors.highlightedColor = Darken(newColor, 0.90f);
newColors.selectedColor = Darken(newColor, 0.85f);
newColors.pressedColor = Darken(newColor, 0.80f);
btn.colors = newColors;
}
void OnClick()
{
// через GameManager (предпочтительно)
GameManager.Instance.LoadLevel(world, stage);
// Фоллбэк, если нужно:
// UnityEngine.SceneManagement.SceneManager.LoadScene(sceneName);
}
private static Color Darken(Color c, float factor)
=> new Color(c.r * factor, c.g * factor, c.b * factor, c.a);
}

View File

@ -5,107 +5,110 @@ using UnityEngine.UI;
using UnityEngine.SceneManagement;
using UnityEngine.InputSystem;
public class LevelSelectModal : MonoBehaviour
namespace RR.Common.UI
{
[Header("Управление")]
[SerializeField] private InputActionReference close;
[Header("UI")]
[SerializeField] private CanvasGroup canvasGroup;
[SerializeField] private Transform content; // Grid parent
[SerializeField] private LevelButton levelButtonPrefab;
[SerializeField] private Button closeButton;
[SerializeField] private float fadeDuration = 0.15f;
readonly List<LevelButton> levelsPool = new();
void Awake()
public class LevelSelectModal : MonoBehaviour
{
if (closeButton) closeButton.onClick.AddListener(Close);
gameObject.SetActive(false);
}
[Header("Управление")]
[SerializeField] private InputActionReference close;
// ==== ПУБЛИЧНЫЙ API ====
public void Open()
{
BuildIfNeeded();
gameObject.SetActive(true);
StopAllCoroutines();
StartCoroutine(Fade(0f, 1f, fadeDuration));
}
[Header("UI")]
[SerializeField] private CanvasGroup canvasGroup;
[SerializeField] private Transform content; // Grid parent
[SerializeField] private LevelButton levelButtonPrefab;
[SerializeField] private Button closeButton;
[SerializeField] private float fadeDuration = 0.15f;
public void Close()
{
StopAllCoroutines();
StartCoroutine(Fade(1f, 0f, fadeDuration, () => gameObject.SetActive(false)));
}
readonly List<LevelButton> levelsPool = new();
// ==== ВНУТРЕННЕЕ ====
void BuildIfNeeded()
{
// Очистим/пересоберём (можно кэшировать, но пересборка надёжнее при изменениях Build Settings)
foreach (var b in levelsPool) if (b) Destroy(b.gameObject);
levelsPool.Clear();
var levels = EnumerateLevelScenesInBuild()
.OrderBy(e => e.world)
.ThenBy(e => e.stage)
.ToList();
foreach (var lv in levels)
void Awake()
{
var btn = Instantiate(levelButtonPrefab, content);
btn.Setup(lv.name, lv.world, lv.stage);
btn.SetColor(Color.green);
levelsPool.Add(btn);
if (closeButton) closeButton.onClick.AddListener(Close);
gameObject.SetActive(false);
}
}
struct LevelEntry { public string name; public int world; public int stage; }
IEnumerable<LevelEntry> EnumerateLevelScenesInBuild()
{
int n = SceneManager.sceneCountInBuildSettings;
for (int i = 0; i < n; i++)
// ==== ПУБЛИЧНЫЙ API ====
public void Open()
{
string path = SceneUtility.GetScenePathByBuildIndex(i);
string name = System.IO.Path.GetFileNameWithoutExtension(path);
// фильтр "только уровни" по формату имени W-S:
var parts = name.Split('-');
if (parts.Length != 2) continue;
if (!int.TryParse(parts[0], out int w)) continue;
if (!int.TryParse(parts[1], out int s)) continue;
// Исключим служебные сцены, даже если вдруг совпадут по формату (на всякий случай)
if (name.Equals("Level UI", System.StringComparison.OrdinalIgnoreCase)) continue;
if (name.Equals("MainMenu", System.StringComparison.OrdinalIgnoreCase)) continue;
yield return new LevelEntry { name = name, world = w, stage = s };
BuildIfNeeded();
gameObject.SetActive(true);
StopAllCoroutines();
StartCoroutine(Fade(0f, 1f, fadeDuration));
}
}
System.Collections.IEnumerator Fade(float from, float to, float time, System.Action onDone = null)
{
if (!canvasGroup) { onDone?.Invoke(); yield break; }
float t = 0f;
canvasGroup.alpha = from;
canvasGroup.blocksRaycasts = true;
while (t < time)
public void Close()
{
t += Time.unscaledDeltaTime;
canvasGroup.alpha = Mathf.Lerp(from, to, t / time);
yield return null;
StopAllCoroutines();
StartCoroutine(Fade(1f, 0f, fadeDuration, () => gameObject.SetActive(false)));
}
canvasGroup.alpha = to;
canvasGroup.blocksRaycasts = to > 0.99f;
onDone?.Invoke();
}
void Update()
{
// ESC закрыть
if (gameObject.activeSelf && close.action.WasPressedThisFrame())
Close();
// ==== ВНУТРЕННЕЕ ====
void BuildIfNeeded()
{
// Очистим/пересоберём (можно кэшировать, но пересборка надёжнее при изменениях Build Settings)
foreach (var b in levelsPool) if (b) Destroy(b.gameObject);
levelsPool.Clear();
var levels = EnumerateLevelScenesInBuild()
.OrderBy(e => e.world)
.ThenBy(e => e.stage)
.ToList();
foreach (var lv in levels)
{
var btn = Instantiate(levelButtonPrefab, content);
btn.Setup(lv.name, lv.world, lv.stage);
btn.SetColor(Color.green);
levelsPool.Add(btn);
}
}
struct LevelEntry { public string name; public int world; public int stage; }
IEnumerable<LevelEntry> EnumerateLevelScenesInBuild()
{
int n = SceneManager.sceneCountInBuildSettings;
for (int i = 0; i < n; i++)
{
string path = SceneUtility.GetScenePathByBuildIndex(i);
string name = System.IO.Path.GetFileNameWithoutExtension(path);
// фильтр "только уровни" по формату имени W-S:
var parts = name.Split('-');
if (parts.Length != 2) continue;
if (!int.TryParse(parts[0], out int w)) continue;
if (!int.TryParse(parts[1], out int s)) continue;
// Исключим служебные сцены, даже если вдруг совпадут по формату (на всякий случай)
if (name.Equals("Level UI", System.StringComparison.OrdinalIgnoreCase)) continue;
if (name.Equals("MainMenu", System.StringComparison.OrdinalIgnoreCase)) continue;
yield return new LevelEntry { name = name, world = w, stage = s };
}
}
System.Collections.IEnumerator Fade(float from, float to, float time, System.Action onDone = null)
{
if (!canvasGroup) { onDone?.Invoke(); yield break; }
float t = 0f;
canvasGroup.alpha = from;
canvasGroup.blocksRaycasts = true;
while (t < time)
{
t += Time.unscaledDeltaTime;
canvasGroup.alpha = Mathf.Lerp(from, to, t / time);
yield return null;
}
canvasGroup.alpha = to;
canvasGroup.blocksRaycasts = to > 0.99f;
onDone?.Invoke();
}
void Update()
{
// ESC закрыть
if (gameObject.activeSelf && close.action.WasPressedThisFrame())
Close();
}
}
}

View File

@ -3,157 +3,160 @@ using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
[DisallowMultipleComponent]
public class ModalFocusTrap : MonoBehaviour
namespace RR.Common.UI
{
[Header("Modal")]
public GameObject modalRoot;
public Selectable firstSelected;
[Header("Behavior")]
[Tooltip("Следить и возвращать фокус внутрь модалки, если он уходит наружу.")]
public bool enforce = true;
bool wasOpenLastFrame;
GameObject prevSelectedGlobal;
readonly List<Selectable> outside = new();
readonly Dictionary<Selectable, bool> outsidePrev = new();
Selectable lastModalSelected;
void Reset()
[DisallowMultipleComponent]
public class ModalFocusTrap : MonoBehaviour
{
if (modalRoot == null)
[Header("Modal")]
public GameObject modalRoot;
public Selectable firstSelected;
[Header("Behavior")]
[Tooltip("Следить и возвращать фокус внутрь модалки, если он уходит наружу.")]
public bool enforce = true;
bool wasOpenLastFrame;
GameObject prevSelectedGlobal;
readonly List<Selectable> outside = new();
readonly Dictionary<Selectable, bool> outsidePrev = new();
Selectable lastModalSelected;
void Reset()
{
var sibling = transform.parent ? transform.parent.Find("LevelSelectModal") : null;
if (sibling) modalRoot = sibling.gameObject;
}
}
//void OnEnable()
//{
// if (modalRoot != null && modalRoot.activeSelf) OnModalOpened();
//}
void Update()
{
if (modalRoot == null) return;
bool isOpen = modalRoot.activeSelf;
if (isOpen && !wasOpenLastFrame) OnModalOpened();
else if (!isOpen && wasOpenLastFrame) OnModalClosed();
wasOpenLastFrame = isOpen;
if (isOpen && enforce) EnsureFocusInsideModal();
}
void OnDisable()
{
if (wasOpenLastFrame) OnModalClosed();
}
void OnModalOpened()
{
// запомнить, что было выделено до открытия
prevSelectedGlobal = EventSystem.current ? EventSystem.current.currentSelectedGameObject : null;
// выключить интерактив вне модалки
CollectOutsideSelectables();
foreach (var s in outside)
{
if (!s) continue;
outsidePrev[s] = s.interactable;
s.interactable = false;
}
// сфокусировать элемент внутри модалки
GameObject toSelect = null;
if (firstSelected && firstSelected.gameObject.activeInHierarchy)
toSelect = firstSelected.gameObject;
else
{
var any = modalRoot.GetComponentInChildren<Selectable>(includeInactive: false);
if (any) toSelect = any.gameObject;
}
if (toSelect && EventSystem.current)
{
EventSystem.current.SetSelectedGameObject(null);
EventSystem.current.SetSelectedGameObject(toSelect);
lastModalSelected = toSelect.GetComponent<Selectable>();
}
}
void OnModalClosed()
{
foreach (var kv in outsidePrev)
{
var s = kv.Key;
if (s) s.interactable = kv.Value;
}
outsidePrev.Clear();
outside.Clear();
if (EventSystem.current)
{
if (prevSelectedGlobal && prevSelectedGlobal.activeInHierarchy)
EventSystem.current.SetSelectedGameObject(prevSelectedGlobal);
else
EventSystem.current.SetSelectedGameObject(null);
}
lastModalSelected = null;
prevSelectedGlobal = null;
}
void CollectOutsideSelectables()
{
outside.Clear();
outsidePrev.Clear();
// ✅ Новый API Unity 6
var all = Object.FindObjectsByType<Selectable>(
FindObjectsInactive.Include,
FindObjectsSortMode.None);
foreach (var s in all)
{
if (!s || !s.gameObject.activeInHierarchy) continue;
if (!IsUnderModal(s.transform))
outside.Add(s);
}
}
bool IsUnderModal(Transform t)
{
if (!modalRoot) return false;
var root = modalRoot.transform;
for (var cur = t; cur != null; cur = cur.parent)
if (cur == root) return true;
return false;
}
void EnsureFocusInsideModal()
{
if (!EventSystem.current) return;
var cur = EventSystem.current.currentSelectedGameObject;
if (cur == null || !IsUnderModal(cur.transform))
{
GameObject fallback =
(lastModalSelected && lastModalSelected.gameObject.activeInHierarchy) ? lastModalSelected.gameObject :
(firstSelected && firstSelected.gameObject.activeInHierarchy) ? firstSelected.gameObject :
modalRoot.GetComponentInChildren<Selectable>()?.gameObject;
if (fallback)
if (modalRoot == null)
{
EventSystem.current.SetSelectedGameObject(fallback);
lastModalSelected = fallback.GetComponent<Selectable>();
var sibling = transform.parent ? transform.parent.Find("LevelSelectModal") : null;
if (sibling) modalRoot = sibling.gameObject;
}
}
else
//void OnEnable()
//{
// if (modalRoot != null && modalRoot.activeSelf) OnModalOpened();
//}
void Update()
{
lastModalSelected = cur.GetComponent<Selectable>();
if (modalRoot == null) return;
bool isOpen = modalRoot.activeSelf;
if (isOpen && !wasOpenLastFrame) OnModalOpened();
else if (!isOpen && wasOpenLastFrame) OnModalClosed();
wasOpenLastFrame = isOpen;
if (isOpen && enforce) EnsureFocusInsideModal();
}
void OnDisable()
{
if (wasOpenLastFrame) OnModalClosed();
}
void OnModalOpened()
{
// запомнить, что было выделено до открытия
prevSelectedGlobal = EventSystem.current ? EventSystem.current.currentSelectedGameObject : null;
// выключить интерактив вне модалки
CollectOutsideSelectables();
foreach (var s in outside)
{
if (!s) continue;
outsidePrev[s] = s.interactable;
s.interactable = false;
}
// сфокусировать элемент внутри модалки
GameObject toSelect = null;
if (firstSelected && firstSelected.gameObject.activeInHierarchy)
toSelect = firstSelected.gameObject;
else
{
var any = modalRoot.GetComponentInChildren<Selectable>(includeInactive: false);
if (any) toSelect = any.gameObject;
}
if (toSelect && EventSystem.current)
{
EventSystem.current.SetSelectedGameObject(null);
EventSystem.current.SetSelectedGameObject(toSelect);
lastModalSelected = toSelect.GetComponent<Selectable>();
}
}
void OnModalClosed()
{
foreach (var kv in outsidePrev)
{
var s = kv.Key;
if (s) s.interactable = kv.Value;
}
outsidePrev.Clear();
outside.Clear();
if (EventSystem.current)
{
if (prevSelectedGlobal && prevSelectedGlobal.activeInHierarchy)
EventSystem.current.SetSelectedGameObject(prevSelectedGlobal);
else
EventSystem.current.SetSelectedGameObject(null);
}
lastModalSelected = null;
prevSelectedGlobal = null;
}
void CollectOutsideSelectables()
{
outside.Clear();
outsidePrev.Clear();
// ✅ Новый API Unity 6
var all = Object.FindObjectsByType<Selectable>(
FindObjectsInactive.Include,
FindObjectsSortMode.None);
foreach (var s in all)
{
if (!s || !s.gameObject.activeInHierarchy) continue;
if (!IsUnderModal(s.transform))
outside.Add(s);
}
}
bool IsUnderModal(Transform t)
{
if (!modalRoot) return false;
var root = modalRoot.transform;
for (var cur = t; cur != null; cur = cur.parent)
if (cur == root) return true;
return false;
}
void EnsureFocusInsideModal()
{
if (!EventSystem.current) return;
var cur = EventSystem.current.currentSelectedGameObject;
if (cur == null || !IsUnderModal(cur.transform))
{
GameObject fallback =
(lastModalSelected && lastModalSelected.gameObject.activeInHierarchy) ? lastModalSelected.gameObject :
(firstSelected && firstSelected.gameObject.activeInHierarchy) ? firstSelected.gameObject :
modalRoot.GetComponentInChildren<Selectable>()?.gameObject;
if (fallback)
{
EventSystem.current.SetSelectedGameObject(fallback);
lastModalSelected = fallback.GetComponent<Selectable>();
}
}
else
{
lastModalSelected = cur.GetComponent<Selectable>();
}
}
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ba4addb19fb5abd41b386834b260506b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,13 @@
using RR.Game2D.Core;
using UnityEngine;
public class DebugSettings : MonoBehaviour
{
[SerializeField] private int livesCount = 99;
[SerializeField] private int coinsCount;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
GameManager.Instance.Lives = livesCount;
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 701f771ffb1a73a4cad25ae47cff0204

View File

Before

Width:  |  Height:  |  Size: 681 KiB

After

Width:  |  Height:  |  Size: 681 KiB

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fda761cdf76f90f44b349fba56fcc2b0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,50 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Signs_50
m_Shader: {fileID: 4800000, guid: e260cfa7296ee7642b167f1eb5be5023, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _AlphaTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 6bf6ab5c1534fe44b803733131ceacb9, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MaskTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _NormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _EnableExternalAlpha: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _RendererColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0fed7e543980c1449b5c3150b60d1fa6
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 KiB

View File

@ -0,0 +1,156 @@
fileFormatVersion: 2
guid: 715a52b4efbcc9e4fae1985c3cef70aa
TextureImporter:
internalIDToNameTable:
- first:
213: 1714756807398554617
second: Signs_0
externalObjects: {}
serializedVersion: 13
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
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
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
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: Signs_0
rect:
serializedVersion: 2
x: 0
y: 61
width: 1024
height: 1398
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 9fb7c2d2b3a0cc710800000000000000
internalID: 1714756807398554617
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
Signs_0: 1714756807398554617
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1012 KiB

View File

@ -0,0 +1,156 @@
fileFormatVersion: 2
guid: e2bdf0f30770013479cc6bbe36a0313d
TextureImporter:
internalIDToNameTable:
- first:
213: 6206282737619276625
second: Signs_1_0
externalObjects: {}
serializedVersion: 13
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
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
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
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: Signs_1_0
rect:
serializedVersion: 2
x: 0
y: 61
width: 1024
height: 1398
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: 1539f6f7445212650800000000000000
internalID: 6206282737619276625
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
Signs_1_0: 6206282737619276625
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 351321617db6af8488802fb622be4c65
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -0,0 +1,156 @@
fileFormatVersion: 2
guid: 73cc29059c776764ebcbcbf421e9a317
TextureImporter:
internalIDToNameTable:
- first:
213: -4178046375966092550
second: 4_0
externalObjects: {}
serializedVersion: 13
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
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
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
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: 4_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 576
height: 145
alignment: 0
pivot: {x: 0, y: 0}
border: {x: 0, y: 0, z: 0, w: 0}
customData:
outline: []
physicsShape: []
tessellationDetail: -1
bones: []
spriteID: af2de6115f89406c0800000000000000
internalID: -4178046375966092550
vertices: []
indices:
edges: []
weights: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable:
4_0: -4178046375966092550
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,6 @@
{
"dependencies": {
"com.unity.cinemachine": "3.1.4",
"com.unity.collab-proxy": "2.9.2",
"com.unity.feature.2d": "2.0.1",
"com.unity.ide.rider": "3.0.36",

View File

@ -102,6 +102,16 @@
},
"url": "https://packages.unity.com"
},
"com.unity.cinemachine": {
"version": "3.1.4",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.splines": "2.0.0",
"com.unity.modules.imgui": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.collab-proxy": {
"version": "2.9.2",
"depth": 0,
@ -241,6 +251,13 @@
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.settings-manager": {
"version": "2.1.0",
"depth": 2,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.shadergraph": {
"version": "17.0.4",
"depth": 1,
@ -250,6 +267,17 @@
"com.unity.searcher": "4.9.3"
}
},
"com.unity.splines": {
"version": "2.8.1",
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.mathematics": "1.2.1",
"com.unity.modules.imgui": "1.0.0",
"com.unity.settings-manager": "1.0.3"
},
"url": "https://packages.unity.com"
},
"com.unity.test-framework": {
"version": "1.5.1",
"depth": 0,

View File

@ -142,9 +142,10 @@ PlayerSettings:
loadStoreDebugModeEnabled: 0
visionOSBundleVersion: 1.0
tvOSBundleVersion: 1.0
bundleVersion: 0.0.3a
bundleVersion: 0.0.6a
preloadedAssets:
- {fileID: -944628639613478452, guid: 2bcd2660ca9b64942af0de543d8d7100, type: 3}
- {fileID: 11400000, guid: bf6b6fd5471a43d40b76a4625c2f3b62, type: 2}
metroInputSource: 0
wsaTransparentSwapchain: 0
m_HolographicPauseOnTrackingLoss: 1

View File

@ -17,7 +17,7 @@ TagManager:
- No Collision
- Water
- UI
-
- Ground
-
-
-