Implement movement input handling and update UI components for treasure collection

This commit is contained in:
2026-06-20 19:11:24 +03:00
parent ad6388f330
commit a510443130
9 changed files with 247 additions and 26 deletions
+2 -2
View File
@@ -296,11 +296,11 @@ MonoBehaviour:
m_GameObject: {fileID: 7047733282028940674} m_GameObject: {fileID: 7047733282028940674}
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ded23e667cffbfd46b2633ae22204797, type: 3} m_Script: {fileID: 11500000, guid: d25d392c71acf0a43a02538234591802, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
animator: {fileID: 7277787345195142390} animator: {fileID: 7277787345195142390}
_treasureSO: {fileID: 11400000, guid: 1f2fcda5f0230034eba2b2cfd9d40897, type: 2} _treasureSO: {fileID: 11400000, guid: d40fd30a10b87f9438f7ac341613dfa2, type: 2}
--- !u!95 &7277787345195142390 --- !u!95 &7277787345195142390
Animator: Animator:
serializedVersion: 7 serializedVersion: 7
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ad356843f4c7ac7459d06943f0ece1a5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,16 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 81dec0bb25670ad4db25ef9ce940b721, type: 3}
m_Name: Coin
m_EditorClassIdentifier: Assembly-CSharp::TreasureSO
Image: {fileID: 8331088274507185253, guid: fb6dbbc81180d204bb4ff36aae48fbc9, type: 3}
Treasure: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: eabbfa3560e70f942a5ae19872153053
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
+16
View File
@@ -0,0 +1,16 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 81dec0bb25670ad4db25ef9ce940b721, type: 3}
m_Name: Key
m_EditorClassIdentifier: Assembly-CSharp::TreasureSO
Image: {fileID: 7818119699687691340, guid: fb6dbbc81180d204bb4ff36aae48fbc9, type: 3}
Treasure: 1
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d40fd30a10b87f9438f7ac341613dfa2
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
+164 -21
View File
@@ -2824,9 +2824,11 @@ MonoBehaviour:
m_GameObject: {fileID: 410068208} m_GameObject: {fileID: 410068208}
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ff6c3960de97db14f89d6633159838dc, type: 3} m_Script: {fileID: 11500000, guid: ae8d1d59de450ae4e8be540c1a9d37ff, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
_totalCoins: {fileID: 1923750336}
_keyIcon: {fileID: 0}
--- !u!1 &411449914 --- !u!1 &411449914
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -3788,7 +3790,7 @@ MonoBehaviour:
m_OnCullStateChanged: m_OnCullStateChanged:
m_PersistentCalls: m_PersistentCalls:
m_Calls: [] m_Calls: []
m_Sprite: {fileID: 21300000, guid: b559b8223232dd0448e50bdfa6649228, type: 3} m_Sprite: {fileID: 8331088274507185253, guid: fb6dbbc81180d204bb4ff36aae48fbc9, type: 3}
m_Type: 0 m_Type: 0
m_PreserveAspect: 0 m_PreserveAspect: 0
m_FillCenter: 1 m_FillCenter: 1
@@ -3833,9 +3835,11 @@ MonoBehaviour:
m_GameObject: {fileID: 679297301} m_GameObject: {fileID: 679297301}
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b3ead8e41e973dd43b93a8638ea30a36, type: 3} m_Script: {fileID: 11500000, guid: 5b7fcd68a9cc8f64bbc27a6eb9ec68a1, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
_openDoor: {fileID: -1152093481, guid: 7c2d6acd22d2d0c40b84d99967afb42a, type: 3}
_debugMode: 0
--- !u!61 &679297303 --- !u!61 &679297303
BoxCollider2D: BoxCollider2D:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -5498,6 +5502,51 @@ Transform:
m_CorrespondingSourceObject: {fileID: 7345322822309755345, guid: b38f313f4560587478b6bc53fc9aaf5c, type: 3} m_CorrespondingSourceObject: {fileID: 7345322822309755345, guid: b38f313f4560587478b6bc53fc9aaf5c, type: 3}
m_PrefabInstance: {fileID: 1149735060} m_PrefabInstance: {fileID: 1149735060}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!1 &1173510571
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1173510573}
- component: {fileID: 1173510572}
m_Layer: 0
m_Name: GameManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1173510572
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1173510571}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8f37247791475bc4bb2887347a0f905a, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::GameManager
_debugMode: 0
--- !u!4 &1173510573
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1173510571}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -5.43318, y: -4.54724, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1173618891 --- !u!1 &1173618891
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -5790,7 +5839,7 @@ MonoBehaviour:
m_OnCullStateChanged: m_OnCullStateChanged:
m_PersistentCalls: m_PersistentCalls:
m_Calls: [] m_Calls: []
m_Sprite: {fileID: 21300000, guid: c246988591b5dda41aa966d3c73bac73, type: 3} m_Sprite: {fileID: 7818119699687691340, guid: fb6dbbc81180d204bb4ff36aae48fbc9, type: 3}
m_Type: 0 m_Type: 0
m_PreserveAspect: 0 m_PreserveAspect: 0
m_FillCenter: 1 m_FillCenter: 1
@@ -6203,6 +6252,54 @@ Transform:
m_CorrespondingSourceObject: {fileID: 7345322822309755345, guid: b38f313f4560587478b6bc53fc9aaf5c, type: 3} m_CorrespondingSourceObject: {fileID: 7345322822309755345, guid: b38f313f4560587478b6bc53fc9aaf5c, type: 3}
m_PrefabInstance: {fileID: 1325345547} m_PrefabInstance: {fileID: 1325345547}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!1 &1331708330
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1331708332}
- component: {fileID: 1331708331}
m_Layer: 0
m_Name: NoiseSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1331708331
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1331708330}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 897c2741fe0100e4990a32480e24d9ae, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::NoiseSystem
_debugMode: 0
_enemyLayer:
serializedVersion: 2
m_Bits: 128
--- !u!4 &1331708332
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1331708330}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 18.38036, y: -4.00387, z: 0}
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!4 &1341375639 stripped --- !u!4 &1341375639 stripped
Transform: Transform:
m_CorrespondingSourceObject: {fileID: 8121927806228425505, guid: ba1868bb4c26f6d41830aada771e3006, type: 3} m_CorrespondingSourceObject: {fileID: 8121927806228425505, guid: ba1868bb4c26f6d41830aada771e3006, type: 3}
@@ -7111,6 +7208,7 @@ MonoBehaviour:
_spawnPoint: {fileID: 5855359588613562703} _spawnPoint: {fileID: 5855359588613562703}
_hammerPrefab: {fileID: 6648495433791226095, guid: 111653ffd63dcc64a91ceb9c5d52aa04, type: 3} _hammerPrefab: {fileID: 6648495433791226095, guid: 111653ffd63dcc64a91ceb9c5d52aa04, type: 3}
_throwSpeed: 5 _throwSpeed: 5
_throwCooldown: 1.5
--- !u!114 &1627236062 --- !u!114 &1627236062
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -7123,19 +7221,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 45d7bd38990996d4488582b07cbe7e40, type: 3} m_Script: {fileID: 11500000, guid: 45d7bd38990996d4488582b07cbe7e40, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: Assembly-CSharp::InputManager m_EditorClassIdentifier: Assembly-CSharp::InputManager
--- !u!114 &1627236066
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 681564194}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 907b91debf5d5864780e9466f4017f38, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerState
Lives: 3
--- !u!1 &1638752927 --- !u!1 &1638752927
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -7146,7 +7231,7 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 1638752929} - component: {fileID: 1638752929}
- component: {fileID: 1638752928} - component: {fileID: 1638752928}
m_Layer: 0 m_Layer: 7
m_Name: GoblinsSpawnPoint m_Name: GoblinsSpawnPoint
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
@@ -7955,6 +8040,52 @@ Transform:
- {fileID: 1261849835} - {fileID: 1261849835}
m_Father: {fileID: 1173618893} m_Father: {fileID: 1173618893}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2042290050
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2042290052}
- component: {fileID: 2042290051}
m_Layer: 0
m_Name: LevelManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &2042290051
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2042290050}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 95776c7bbfb13d646b34788f8187536f, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::LevelManager
_debugMode: 0
_doorReference: {fileID: 679297302}
--- !u!4 &2042290052
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2042290050}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -5.43318, y: -4.54724, z: 0}
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!4 &2065311631 stripped --- !u!4 &2065311631 stripped
Transform: Transform:
m_CorrespondingSourceObject: {fileID: 7345322822309755345, guid: b38f313f4560587478b6bc53fc9aaf5c, type: 3} m_CorrespondingSourceObject: {fileID: 7345322822309755345, guid: b38f313f4560587478b6bc53fc9aaf5c, type: 3}
@@ -8365,6 +8496,18 @@ PrefabInstance:
propertyPath: _spawnPoint propertyPath: _spawnPoint
value: value:
objectReference: {fileID: 461379296} objectReference: {fileID: 461379296}
- target: {fileID: 1693252312754102175, guid: a7f273d812293e54d92972f62e1f0159, type: 3}
propertyPath: _regularSprite
value:
objectReference: {fileID: 21300000, guid: 618309f12a7ca8b47b9aac8c7e39fc07, type: 3}
- target: {fileID: 1693252312754102175, guid: a7f273d812293e54d92972f62e1f0159, type: 3}
propertyPath: _noHammerSprite
value:
objectReference: {fileID: 21300000, guid: c7266c68d1eb5a34882171399d35bba5, type: 3}
- target: {fileID: 1693252312754102175, guid: a7f273d812293e54d92972f62e1f0159, type: 3}
propertyPath: _mapLayer.m_Bits
value: 8
objectReference: {fileID: 0}
- target: {fileID: 3156624200786225141, guid: a7f273d812293e54d92972f62e1f0159, type: 3} - target: {fileID: 3156624200786225141, guid: a7f273d812293e54d92972f62e1f0159, type: 3}
propertyPath: m_Layer propertyPath: m_Layer
value: 8 value: 8
@@ -8442,9 +8585,6 @@ PrefabInstance:
- targetCorrespondingSourceObject: {fileID: 3931708971405200045, guid: a7f273d812293e54d92972f62e1f0159, type: 3} - targetCorrespondingSourceObject: {fileID: 3931708971405200045, guid: a7f273d812293e54d92972f62e1f0159, type: 3}
insertIndex: -1 insertIndex: -1
addedObject: {fileID: 1627236062} addedObject: {fileID: 1627236062}
- targetCorrespondingSourceObject: {fileID: 3931708971405200045, guid: a7f273d812293e54d92972f62e1f0159, type: 3}
insertIndex: -1
addedObject: {fileID: 1627236066}
m_SourcePrefab: {fileID: 100100000, guid: a7f273d812293e54d92972f62e1f0159, type: 3} m_SourcePrefab: {fileID: 100100000, guid: a7f273d812293e54d92972f62e1f0159, type: 3}
--- !u!4 &5855359588613562703 stripped --- !u!4 &5855359588613562703 stripped
Transform: Transform:
@@ -8460,3 +8600,6 @@ SceneRoots:
- {fileID: 1173618893} - {fileID: 1173618893}
- {fileID: 1123299336} - {fileID: 1123299336}
- {fileID: 1269535137} - {fileID: 1269535137}
- {fileID: 1173510573}
- {fileID: 2042290052}
- {fileID: 1331708332}
+17 -2
View File
@@ -17,6 +17,7 @@ public class PlayerController : Character
private InputManager _inputManager; private InputManager _inputManager;
private PlayerState _playerState; private PlayerState _playerState;
private HammerThrower _hammerThrower; private HammerThrower _hammerThrower;
private Vector2 _currentMovement;
private void Awake() private void Awake()
{ {
@@ -25,6 +26,7 @@ public class PlayerController : Character
_hammerThrower = GetComponent<HammerThrower>(); _hammerThrower = GetComponent<HammerThrower>();
_inputManager.OnFire += OnFireButtonPressed; _inputManager.OnFire += OnFireButtonPressed;
_inputManager.OnMovementChanged += OnMovementChanged;
base.Init(); base.Init();
} }
@@ -38,6 +40,15 @@ public class PlayerController : Character
_inputManager.OnDisable(); _inputManager.OnDisable();
} }
private void OnDestroy()
{
if (_inputManager != null)
{
_inputManager.OnFire -= OnFireButtonPressed;
_inputManager.OnMovementChanged -= OnMovementChanged;
}
}
private void Update() private void Update()
{ {
if (_hammer == null && !_isHoldingHammer) if (_hammer == null && !_isHoldingHammer)
@@ -46,11 +57,15 @@ public class PlayerController : Character
_isHoldingHammer = true; _isHoldingHammer = true;
} }
Vector2 move = _inputManager.Movement; MoveTo(_currentMovement.x, isAllowVertical ? _currentMovement.y : 0);
MoveTo(move.x, isAllowVertical ? move.y : 0);
_hammerThrower.SetFacingDirection(_facingRight); _hammerThrower.SetFacingDirection(_facingRight);
} }
private void OnMovementChanged(Vector2 movement)
{
_currentMovement = movement;
}
private void OnFireButtonPressed() private void OnFireButtonPressed()
{ {
if (_hammerThrower.CanThrow) if (_hammerThrower.CanThrow)
+7
View File
@@ -7,6 +7,7 @@ public class InputManager : MonoBehaviour
private InputActions _actions; private InputActions _actions;
public Vector2 Movement { get; private set; } public Vector2 Movement { get; private set; }
public event Action<Vector2> OnMovementChanged;
public event Action OnFire; public event Action OnFire;
private void Awake() private void Awake()
@@ -14,6 +15,7 @@ public class InputManager : MonoBehaviour
_actions = new InputActions(); _actions = new InputActions();
// Movement // Movement
_actions.Player.Movement.started += OnMovementPerformed;
_actions.Player.Movement.performed += OnMovementPerformed; _actions.Player.Movement.performed += OnMovementPerformed;
_actions.Player.Movement.canceled += OnMovementCanceled; _actions.Player.Movement.canceled += OnMovementCanceled;
@@ -30,17 +32,22 @@ public class InputManager : MonoBehaviour
} }
public void OnDisable() public void OnDisable()
{
if (_actions != null)
{ {
_actions.Disable(); _actions.Disable();
} }
}
private void OnMovementPerformed(InputAction.CallbackContext ctx) private void OnMovementPerformed(InputAction.CallbackContext ctx)
{ {
Movement = ctx.ReadValue<Vector2>(); Movement = ctx.ReadValue<Vector2>();
OnMovementChanged?.Invoke(Movement);
} }
private void OnMovementCanceled(InputAction.CallbackContext ctx) private void OnMovementCanceled(InputAction.CallbackContext ctx)
{ {
Movement = Vector2.zero; Movement = Vector2.zero;
OnMovementChanged?.Invoke(Movement);
} }
} }