Lots of bug fixes
This commit is contained in:
parent
dade82f5d1
commit
25a572c990
43
Assets/Resources/Animations/Enemy/EnemyMenu.controller
Normal file
43
Assets/Resources/Animations/Enemy/EnemyMenu.controller
Normal 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}
|
||||
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2afc6fa6fcbfb754aa775b11c5938bcd
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 9100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -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:
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
315
Assets/Resources/Prefabs/Utilities/Camera.prefab
Normal file
315
Assets/Resources/Prefabs/Utilities/Camera.prefab
Normal 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}
|
||||
7
Assets/Resources/Prefabs/Utilities/Camera.prefab.meta
Normal file
7
Assets/Resources/Prefabs/Utilities/Camera.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ff70cd57edcbc3c439493cb8c61b9072
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -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
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -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
@ -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
@ -1,6 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
public interface IBouncy
|
||||
{
|
||||
public bool TryBounce(Collision2D collision);
|
||||
}
|
||||
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 847009d73357dff4b9eecc3544331c9a
|
||||
@ -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);
|
||||
}
|
||||
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 81cf0790d7ea99d42808e924b32bf042
|
||||
@ -1,6 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
public interface IPickable
|
||||
{
|
||||
public bool TryPickup(GameObject newOwner, Transform attachPoint = null);
|
||||
}
|
||||
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0dcc6d4619228494fac3da9f768fb2cb
|
||||
@ -1,4 +0,0 @@
|
||||
public interface IRecallable
|
||||
{
|
||||
public void Recall();
|
||||
}
|
||||
@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cf6adbb036b554543bbd9c373ce32a67
|
||||
53
Assets/Resources/Scripts/Abstract/Interfaces.cs
Normal file
53
Assets/Resources/Scripts/Abstract/Interfaces.cs
Normal 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);
|
||||
}
|
||||
|
||||
}
|
||||
2
Assets/Resources/Scripts/Abstract/Interfaces.cs.meta
Normal file
2
Assets/Resources/Scripts/Abstract/Interfaces.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ca0eec286a0beba4e9f877ad5dfc0833
|
||||
@ -16,7 +16,7 @@ namespace RR.Game2D.Core
|
||||
previousCameraPosition = cameraTransform.position;
|
||||
}
|
||||
|
||||
void LateUpdate()
|
||||
void FixedUpdate()
|
||||
{
|
||||
Vector3 delta = cameraTransform.position - previousCameraPosition;
|
||||
if (lockYAxis)
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
45
Assets/Resources/Scripts/Behaviour/CinemachineFollow.cs
Normal file
45
Assets/Resources/Scripts/Behaviour/CinemachineFollow.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: af1b9ff67ef498c43a823d7829b14644
|
||||
96
Assets/Resources/Scripts/Behaviour/JumpPad2D.cs
Normal file
96
Assets/Resources/Scripts/Behaviour/JumpPad2D.cs
Normal 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);
|
||||
//}
|
||||
}
|
||||
}
|
||||
2
Assets/Resources/Scripts/Behaviour/JumpPad2D.cs.meta
Normal file
2
Assets/Resources/Scripts/Behaviour/JumpPad2D.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c8be6d7cf582ed04788ea190549fbd11
|
||||
@ -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>
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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("Игрок")]
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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"))
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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>();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
8
Assets/Resources/Scripts/Utilities.meta
Normal file
8
Assets/Resources/Scripts/Utilities.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ba4addb19fb5abd41b386834b260506b
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
13
Assets/Resources/Scripts/Utilities/DebugSettings.cs
Normal file
13
Assets/Resources/Scripts/Utilities/DebugSettings.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
2
Assets/Resources/Scripts/Utilities/DebugSettings.cs.meta
Normal file
2
Assets/Resources/Scripts/Utilities/DebugSettings.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 701f771ffb1a73a4cad25ae47cff0204
|
||||
|
Before Width: | Height: | Size: 681 KiB After Width: | Height: | Size: 681 KiB |
8
Assets/Resources/Sprites/Props/Signs/Materials.meta
Normal file
8
Assets/Resources/Sprites/Props/Signs/Materials.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fda761cdf76f90f44b349fba56fcc2b0
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
50
Assets/Resources/Sprites/Props/Signs/Materials/Signs_50.mat
Normal file
50
Assets/Resources/Sprites/Props/Signs/Materials/Signs_50.mat
Normal 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
|
||||
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0fed7e543980c1449b5c3150b60d1fa6
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Resources/Sprites/Props/Signs/Signs.png
Normal file
BIN
Assets/Resources/Sprites/Props/Signs/Signs.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 977 KiB |
156
Assets/Resources/Sprites/Props/Signs/Signs.png.meta
Normal file
156
Assets/Resources/Sprites/Props/Signs/Signs.png.meta
Normal 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:
|
||||
BIN
Assets/Resources/Sprites/Props/Signs/Signs_1.png
Normal file
BIN
Assets/Resources/Sprites/Props/Signs/Signs_1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1012 KiB |
156
Assets/Resources/Sprites/Props/Signs/Signs_1.png.meta
Normal file
156
Assets/Resources/Sprites/Props/Signs/Signs_1.png.meta
Normal 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:
|
||||
8
Assets/Resources/Sprites/Temp.meta
Normal file
8
Assets/Resources/Sprites/Temp.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 351321617db6af8488802fb622be4c65
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/Resources/Sprites/Temp/4.png
Normal file
BIN
Assets/Resources/Sprites/Temp/4.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.0 KiB |
156
Assets/Resources/Sprites/Temp/4.png.meta
Normal file
156
Assets/Resources/Sprites/Temp/4.png.meta
Normal 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
@ -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",
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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
|
||||
|
||||
@ -17,7 +17,7 @@ TagManager:
|
||||
- No Collision
|
||||
- Water
|
||||
- UI
|
||||
-
|
||||
- Ground
|
||||
-
|
||||
-
|
||||
-
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user