diff --git a/Assets/Scenes/Sandbox.unity b/Assets/Scenes/Sandbox.unity index 05bcfb0..a381525 100644 --- a/Assets/Scenes/Sandbox.unity +++ b/Assets/Scenes/Sandbox.unity @@ -781,30 +781,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 400000, guid: 2b127815fd0f2074eae3a0c6a4786d0b, type: 3} m_PrefabInstance: {fileID: 1215845398} m_PrefabAsset: {fileID: 0} ---- !u!1 &449506739 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 1218087889432038952, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} - m_PrefabInstance: {fileID: 8204767108263278737} - m_PrefabAsset: {fileID: 0} ---- !u!114 &449506742 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 449506739} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 97c35481a551c3a4d9d5f0e3fe13a03d, type: 3} - m_Name: - m_EditorClassIdentifier: - _ammoType: 1 - _maxBeltAmmoAmount: 0 - _maxMagAmmoAmount: 0 - _currentBeltAmmoAmount: 0 - _currentMagAmmoAmount: 0 - _S_currentBeltAmmoAmount: {fileID: 11400000, guid: f19d1fc1d5102a545800f4f8273640b1, type: 2} - _S_currentMagAmmoAmount: {fileID: 11400000, guid: 9a77ec14c64717643bed1c6e7a3885ae, type: 2} --- !u!1 &520203987 GameObject: m_ObjectHideFlags: 0 @@ -2143,6 +2119,25 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 925195241} m_CullTransparentMesh: 1 +--- !u!1 &942203718 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 160269183453626702, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} + m_PrefabInstance: {fileID: 8204767108263278737} + m_PrefabAsset: {fileID: 0} +--- !u!114 &942203720 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 942203718} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 51cf941944fb27e43863c290683f7068, type: 3} + m_Name: + m_EditorClassIdentifier: + _weapons: [] + _currentWeapon: 0 --- !u!1001 &945433442 PrefabInstance: m_ObjectHideFlags: 0 @@ -3145,30 +3140,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 400000, guid: 2b127815fd0f2074eae3a0c6a4786d0b, type: 3} m_PrefabInstance: {fileID: 304950691} m_PrefabAsset: {fileID: 0} ---- !u!1 &1483687393 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 3273242134651530650, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} - m_PrefabInstance: {fileID: 8204767108263278737} - m_PrefabAsset: {fileID: 0} ---- !u!114 &1483687396 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1483687393} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 97c35481a551c3a4d9d5f0e3fe13a03d, type: 3} - m_Name: - m_EditorClassIdentifier: - _ammoType: 3 - _maxBeltAmmoAmount: 0 - _maxMagAmmoAmount: 0 - _currentBeltAmmoAmount: 0 - _currentMagAmmoAmount: 0 - _S_currentBeltAmmoAmount: {fileID: 11400000, guid: f19d1fc1d5102a545800f4f8273640b1, type: 2} - _S_currentMagAmmoAmount: {fileID: 11400000, guid: 9a77ec14c64717643bed1c6e7a3885ae, type: 2} --- !u!1001 &1486746696 PrefabInstance: m_ObjectHideFlags: 0 @@ -3917,7 +3888,18 @@ GameObject: m_CorrespondingSourceObject: {fileID: 8616685848737228372, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} m_PrefabInstance: {fileID: 8204767108263278737} m_PrefabAsset: {fileID: 0} ---- !u!114 &1859157931 +--- !u!114 &1859157935 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 5420857361349278248, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} + m_PrefabInstance: {fileID: 8204767108263278737} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1859157918} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e087ecce43ebbff45a1b360637807d93, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1859157939 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3926,16 +3908,11 @@ MonoBehaviour: m_GameObject: {fileID: 1859157918} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f6b8a4e9bfb741aa96889e5df5a06cba, type: 3} + m_Script: {fileID: 11500000, guid: 51cf941944fb27e43863c290683f7068, type: 3} m_Name: m_EditorClassIdentifier: - _fovNormal: 40 - _senseNormal: 1 - _fovZoom: 20 - _senseZoom: 0.5 - _input: {fileID: 0} - _camera: {fileID: 1850161070} - _zoomedIn: 0 + _weapons: [] + _currentWeapon: 0 --- !u!20 &1874573760 stripped Camera: m_CorrespondingSourceObject: {fileID: 9005220659476430821, guid: 2d3a85ecde41a8246a79669975912b74, type: 3} @@ -4380,6 +4357,10 @@ PrefabInstance: propertyPath: m_Name value: Weapon objectReference: {fileID: 0} + - target: {fileID: 335461055095249328, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} + propertyPath: _fpCamera + value: + objectReference: {fileID: 1874573760} - target: {fileID: 335461055095249328, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: fireAction.m_Id value: 2bf4429a-ac42-4cc4-9a14-0dadc769fd99 @@ -4392,14 +4373,22 @@ PrefabInstance: propertyPath: reloadAction.m_Id value: e5dd7aae-807b-46fc-8c1a-a6e621305625 objectReference: {fileID: 0} + - target: {fileID: 335461055095249328, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} + propertyPath: _timeBetweenReloads + value: 1.5 + objectReference: {fileID: 0} - target: {fileID: 335461055095249328, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: reloadAction.m_Name value: Reload objectReference: {fileID: 0} - target: {fileID: 1218087889432038952, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_IsActive - value: 0 + value: 1 objectReference: {fileID: 0} + - target: {fileID: 2132953286740742962, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} + propertyPath: _fpCamera + value: + objectReference: {fileID: 1874573760} - target: {fileID: 2132953286740742962, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: fireAction.m_Id value: 95062357-7b41-46da-81a2-d1977a9c523b @@ -4412,17 +4401,21 @@ PrefabInstance: propertyPath: reloadAction.m_Id value: b6e2ceaf-6126-4eb9-8b2e-91b3dc0253b4 objectReference: {fileID: 0} + - target: {fileID: 2132953286740742962, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} + propertyPath: _timeBetweenReloads + value: 1.5 + objectReference: {fileID: 0} - target: {fileID: 2132953286740742962, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: reloadAction.m_Name value: Reload objectReference: {fileID: 0} - target: {fileID: 3273242134651530650, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_IsActive - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 3360281265970703093, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_IsActive - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 4641286401744272850, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: _fpCamera @@ -4432,14 +4425,22 @@ PrefabInstance: propertyPath: _BulletImpact value: objectReference: {fileID: 252487699782519274, guid: 82851982cb47c134a8403ffcb052b9d2, type: 3} + - target: {fileID: 4641286401744272850, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} + propertyPath: _timeBetweenReloads + value: 1.5 + objectReference: {fileID: 0} - target: {fileID: 5428686084875064986, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: m_Name value: MuzzleFlash objectReference: {fileID: 0} - - target: {fileID: 6980118021907165246, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} - propertyPath: _ammoType - value: 2 + - target: {fileID: 6326861089322885425, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} + propertyPath: m_IsActive + value: 1 objectReference: {fileID: 0} + - target: {fileID: 7060812621224890882, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} + propertyPath: _fpCamera + value: + objectReference: {fileID: 1874573760} - target: {fileID: 7060812621224890882, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: fireAction.m_Id value: 974fe4ce-65be-4370-b772-71ca6290711e @@ -4452,10 +4453,26 @@ PrefabInstance: propertyPath: reloadAction.m_Id value: 9a13135e-9c14-4a7a-a277-378fc4a31eae objectReference: {fileID: 0} + - target: {fileID: 7060812621224890882, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} + propertyPath: _timeBetweenReloads + value: 1.5 + objectReference: {fileID: 0} - target: {fileID: 7060812621224890882, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: reloadAction.m_Name value: Reload objectReference: {fileID: 0} + - target: {fileID: 7329372699192146221, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} + propertyPath: _input + value: + objectReference: {fileID: 1859157935} + - target: {fileID: 7329372699192146221, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} + propertyPath: _camera + value: + objectReference: {fileID: 1850161070} + - target: {fileID: 8155002089127812808, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} + propertyPath: _camera + value: + objectReference: {fileID: 1850161070} - target: {fileID: 8294200720936265358, guid: c5efc39a8aaf6e64ea40e9ad573e9b47, type: 3} propertyPath: _gameOverCanvas value: diff --git a/Assets/Weapons/Crossbow.prefab b/Assets/Weapons/Crossbow.prefab index a4c5431..09ba53d 100644 --- a/Assets/Weapons/Crossbow.prefab +++ b/Assets/Weapons/Crossbow.prefab @@ -41,6 +41,8 @@ GameObject: m_Component: - component: {fileID: 4838220252604734} - component: {fileID: 971410133006304364} + - component: {fileID: 1537282594975695390} + - component: {fileID: 7047714336720636310} m_Layer: 0 m_Name: Crossbow m_TagString: Untagged @@ -77,6 +79,51 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 01ef216392c8f33409f2efcd91f4e510, type: 3} m_Name: m_EditorClassIdentifier: + _range: 100 + _weaponDamage: 100 + _timeBetweenShots: 2 + _fpCamera: {fileID: 0} + _muzzleFlash: {fileID: 0} + _bulletImpact: {fileID: 252487699782519274, guid: 82851982cb47c134a8403ffcb052b9d2, type: 3} + _ammo: {fileID: 1537282594975695390} +--- !u!114 &1537282594975695390 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1519058888169846} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 97c35481a551c3a4d9d5f0e3fe13a03d, type: 3} + m_Name: + m_EditorClassIdentifier: + _ammoType: 1 + _maxBeltAmmoAmount: 10 + _maxMagAmmoAmount: 1 + _currentBeltAmmoAmount: 0 + _currentMagAmmoAmount: 0 + _S_currentBeltAmmoAmount: {fileID: 11400000, guid: f19d1fc1d5102a545800f4f8273640b1, type: 2} + _S_currentMagAmmoAmount: {fileID: 11400000, guid: 9a77ec14c64717643bed1c6e7a3885ae, type: 2} +--- !u!114 &7047714336720636310 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1519058888169846} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6b8a4e9bfb741aa96889e5df5a06cba, type: 3} + m_Name: + m_EditorClassIdentifier: + _fovNormal: 40 + _senseNormal: 1 + _fovZoom: 20 + _senseZoom: 0.5 + _input: {fileID: 0} + _camera: {fileID: 0} + _zoomedIn: 0 --- !u!1 &1768035638187606 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Weapons/Handgun.prefab b/Assets/Weapons/Handgun.prefab index f31810a..812ef0a 100644 --- a/Assets/Weapons/Handgun.prefab +++ b/Assets/Weapons/Handgun.prefab @@ -93,6 +93,7 @@ GameObject: m_Component: - component: {fileID: 4531602420244830} - component: {fileID: 3010920642945371858} + - component: {fileID: 4085014607242062707} m_Layer: 0 m_Name: Handgun m_TagString: Untagged @@ -128,3 +129,29 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 01ef216392c8f33409f2efcd91f4e510, type: 3} m_Name: m_EditorClassIdentifier: + _range: 100 + _weaponDamage: 50 + _timeBetweenShots: 1 + _fpCamera: {fileID: 0} + _muzzleFlash: {fileID: 0} + _bulletImpact: {fileID: 252487699782519274, guid: 82851982cb47c134a8403ffcb052b9d2, type: 3} + _ammo: {fileID: 4085014607242062707} +--- !u!114 &4085014607242062707 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1082139071658744} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 97c35481a551c3a4d9d5f0e3fe13a03d, type: 3} + m_Name: + m_EditorClassIdentifier: + _ammoType: 3 + _maxBeltAmmoAmount: 20 + _maxMagAmmoAmount: 4 + _currentBeltAmmoAmount: 0 + _currentMagAmmoAmount: 0 + _S_currentBeltAmmoAmount: {fileID: 11400000, guid: f19d1fc1d5102a545800f4f8273640b1, type: 2} + _S_currentMagAmmoAmount: {fileID: 11400000, guid: 9a77ec14c64717643bed1c6e7a3885ae, type: 2} diff --git a/Assets/Weapons/MachineGun.prefab b/Assets/Weapons/MachineGun.prefab index 0c7a0cb..79338bf 100644 --- a/Assets/Weapons/MachineGun.prefab +++ b/Assets/Weapons/MachineGun.prefab @@ -11,6 +11,7 @@ GameObject: - component: {fileID: 453068} - component: {fileID: 5719313868755367213} - component: {fileID: 5655468185604888337} + - component: {fileID: 1366121443174139284} - component: {fileID: 3316574} - component: {fileID: 2346984} m_Layer: 0 @@ -48,11 +49,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: _range: 100 - _weaponDamage: 25 + _weaponDamage: 4 + _timeBetweenShots: 0.1 _fpCamera: {fileID: 0} _muzzleFlash: {fileID: 0} - _bulletImpact: {fileID: 0} - _ammo: {fileID: 0} + _bulletImpact: {fileID: 252487699782519274, guid: 82851982cb47c134a8403ffcb052b9d2, type: 3} + _ammo: {fileID: 5655468185604888337} --- !u!114 &5655468185604888337 MonoBehaviour: m_ObjectHideFlags: 0 @@ -65,13 +67,32 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 97c35481a551c3a4d9d5f0e3fe13a03d, type: 3} m_Name: m_EditorClassIdentifier: - _ammoType: 0 - _maxBeltAmmoAmount: 0 - _maxMagAmmoAmount: 0 + _ammoType: 2 + _maxBeltAmmoAmount: 300 + _maxMagAmmoAmount: 45 _currentBeltAmmoAmount: 0 _currentMagAmmoAmount: 0 _S_currentBeltAmmoAmount: {fileID: 11400000, guid: f19d1fc1d5102a545800f4f8273640b1, type: 2} _S_currentMagAmmoAmount: {fileID: 11400000, guid: 9a77ec14c64717643bed1c6e7a3885ae, type: 2} +--- !u!114 &1366121443174139284 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 118234} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6b8a4e9bfb741aa96889e5df5a06cba, type: 3} + m_Name: + m_EditorClassIdentifier: + _fovNormal: 0 + _senseNormal: 0 + _fovZoom: 0 + _senseZoom: 0 + _input: {fileID: 0} + _camera: {fileID: 0} + _zoomedIn: 0 --- !u!33 &3316574 MeshFilter: m_ObjectHideFlags: 0 diff --git a/Assets/Weapons/Revolver.prefab b/Assets/Weapons/Revolver.prefab index ff03ea9..f10359e 100644 --- a/Assets/Weapons/Revolver.prefab +++ b/Assets/Weapons/Revolver.prefab @@ -11,6 +11,7 @@ GameObject: - component: {fileID: 417070} - component: {fileID: 1703679832321447341} - component: {fileID: 8817107657672854186} + - component: {fileID: 3637412066234339666} m_Layer: 0 m_Name: Revolver m_TagString: Untagged @@ -51,6 +52,7 @@ MonoBehaviour: m_EditorClassIdentifier: _range: 100 _weaponDamage: 25 + _timeBetweenShots: 0.5 _fpCamera: {fileID: 0} _muzzleFlash: {fileID: 6070271853189258210} _bulletImpact: {fileID: 252487699782519274, guid: 82851982cb47c134a8403ffcb052b9d2, type: 3} @@ -68,12 +70,31 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: _ammoType: 0 - _maxBeltAmmoAmount: 150 + _maxBeltAmmoAmount: 45 _maxMagAmmoAmount: 7 _currentBeltAmmoAmount: 0 _currentMagAmmoAmount: 3 _S_currentBeltAmmoAmount: {fileID: 11400000, guid: f19d1fc1d5102a545800f4f8273640b1, type: 2} _S_currentMagAmmoAmount: {fileID: 11400000, guid: 9a77ec14c64717643bed1c6e7a3885ae, type: 2} +--- !u!114 &3637412066234339666 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117070} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6b8a4e9bfb741aa96889e5df5a06cba, type: 3} + m_Name: + m_EditorClassIdentifier: + _fovNormal: 40 + _senseNormal: 1 + _fovZoom: 20 + _senseZoom: 0.5 + _input: {fileID: 0} + _camera: {fileID: 0} + _zoomedIn: 0 --- !u!1 &160878 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Weapons/Weapon.cs b/Assets/Weapons/Weapon.cs index c4c9d8d..cfa413a 100644 --- a/Assets/Weapons/Weapon.cs +++ b/Assets/Weapons/Weapon.cs @@ -1,10 +1,15 @@ +using System.Collections; +using System.Collections.Generic; using UnityEngine; public class Weapon : MonoBehaviour { [Header("Config")] + [SerializeField] private int _index; [SerializeField] private float _range = 100f; [SerializeField] private float _weaponDamage = 25f; + [SerializeField] private float _timeBetweenShots; + [SerializeField] private float _timeBetweenReloads; [Header("Connections")] [SerializeField] private Camera _fpCamera; @@ -12,37 +17,65 @@ public class Weapon : MonoBehaviour [SerializeField] private GameObject _bulletImpact; [SerializeField] private Ammo _ammo; + [Header("State")] + [SerializeField] private bool _canShoot; + private void Awake() { + _canShoot = true; _fpCamera = FindObjectOfType(); _muzzleFlash = GetComponentInChildren(); _ammo = GetComponent(); } + public int Index + { + get => _index; + set => _index = value; + } + public void OnFire() { - Shoot(); + if (_canShoot) + { + StartCoroutine(Shoot()); + } } public void OnReload() { - print($"Reloading {gameObject.name}"); - _ammo.Reload(); + StartCoroutine(Reload()); } - private void Shoot() + IEnumerator Reload() { + _canShoot = false; + print($"Reloading {gameObject.name}"); + _ammo.Reload(); + yield return new WaitForSeconds(_timeBetweenReloads); + _canShoot = true; + } + + IEnumerator Shoot() + { + _canShoot = false; if (_ammo.CurrentMagAmmoAmount > 0) { _ammo.ModifyMagAmmo(-1); Animation(); ProcessHit(); } + + yield return new WaitForSeconds(_timeBetweenShots); + _canShoot = true; } private void Animation() { - _muzzleFlash.Play(); + if (_muzzleFlash != null) + { + _muzzleFlash.Play(); + } } private void ProcessHit() diff --git a/Assets/Weapons/WeaponSwitcher.cs b/Assets/Weapons/WeaponSwitcher.cs new file mode 100644 index 0000000..92bd3b8 --- /dev/null +++ b/Assets/Weapons/WeaponSwitcher.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.InputSystem; + +public class WeaponSwitcher : MonoBehaviour +{ + [Header("Config")] + [SerializeField] private Weapon[] _weapons; + + [Header("State")] + [SerializeField] private int _currentWeapon; + + private void OnEnable() + { + _weapons = GetComponentsInChildren(); + var i = 0; + foreach (Weapon weapon in _weapons) + { + weapon.Index = i; + i++; + } + + _currentWeapon = 0; + SelectWeapon(_currentWeapon); + } + + private void SelectWeapon(int index) + { + foreach (Weapon weapon in _weapons) + { + if (weapon.Index == _currentWeapon) + { + weapon.gameObject.SetActive(true); + } + } + } + + private void DeselectAllWeapons() + { + foreach (Weapon weapon in _weapons) + { + weapon.gameObject.SetActive(false); + } + } + + private void Update() + { + if (Mouse.current.middleButton.wasPressedThisFrame) + { + _currentWeapon += 1; + if (_currentWeapon > _weapons.Length - 1) + { + _currentWeapon = 0; + } + + DeselectAllWeapons(); + SelectWeapon(_currentWeapon); + } + } +} \ No newline at end of file diff --git a/Assets/Weapons/WeaponSwitcher.cs.meta b/Assets/Weapons/WeaponSwitcher.cs.meta new file mode 100644 index 0000000..ab5bae9 --- /dev/null +++ b/Assets/Weapons/WeaponSwitcher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 51cf941944fb27e43863c290683f7068 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Weapons/WeaponZoom.cs b/Assets/Weapons/WeaponZoom.cs index e48fc59..d64542f 100644 --- a/Assets/Weapons/WeaponZoom.cs +++ b/Assets/Weapons/WeaponZoom.cs @@ -20,7 +20,7 @@ public class WeaponZoom : MonoBehaviour private void OnEnable() { - _input = GetComponent(); + _input = GetComponentInParent(); _camera = FindObjectOfType(); Debug.Assert(_camera != null, nameof(_camera) + " != null"); _fovNormal = _camera.m_Lens.FieldOfView; @@ -40,6 +40,5 @@ public class WeaponZoom : MonoBehaviour _input.MouseScale = _senseNormal; _camera.m_Lens.FieldOfView = _fovNormal; } - } } \ No newline at end of file