From 17f3448f6cdad236b9e94f6a184e72397eb0ff90 Mon Sep 17 00:00:00 2001 From: KOSMOGOR Date: Sat, 8 Mar 2025 22:41:34 +0300 Subject: [PATCH 1/2] add: pistol weapon and enemy --- Assets/Prefabs/Bullet.prefab | 153 +++++++++++++ Assets/Prefabs/Bullet.prefab.meta | 7 + Assets/Scenes/TestScene.unity | 277 +++++++++++++++++++++++- Assets/Scripts/BulletProjectile.cs | 30 +++ Assets/Scripts/BulletProjectile.cs.meta | 2 + Assets/Scripts/Enemy.cs | 12 + Assets/Scripts/Enemy.cs.meta | 2 + Assets/Scripts/Pistol.cs | 21 ++ Assets/Scripts/Pistol.cs.meta | 2 + Assets/Scripts/Weapon.cs | 13 ++ Assets/Scripts/Weapon.cs.meta | 2 + Assets/Scripts/WeaponController.cs | 19 ++ Assets/Scripts/WeaponController.cs.meta | 2 + ProjectSettings/TagManager.asset | 3 +- 14 files changed, 542 insertions(+), 3 deletions(-) create mode 100644 Assets/Prefabs/Bullet.prefab create mode 100644 Assets/Prefabs/Bullet.prefab.meta create mode 100644 Assets/Scripts/BulletProjectile.cs create mode 100644 Assets/Scripts/BulletProjectile.cs.meta create mode 100644 Assets/Scripts/Enemy.cs create mode 100644 Assets/Scripts/Enemy.cs.meta create mode 100644 Assets/Scripts/Pistol.cs create mode 100644 Assets/Scripts/Pistol.cs.meta create mode 100644 Assets/Scripts/Weapon.cs create mode 100644 Assets/Scripts/Weapon.cs.meta create mode 100644 Assets/Scripts/WeaponController.cs create mode 100644 Assets/Scripts/WeaponController.cs.meta diff --git a/Assets/Prefabs/Bullet.prefab b/Assets/Prefabs/Bullet.prefab new file mode 100644 index 0000000..af47b91 --- /dev/null +++ b/Assets/Prefabs/Bullet.prefab @@ -0,0 +1,153 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1562924000103655330 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2987293529414042391} + - component: {fileID: 3266538827119481022} + - component: {fileID: 3277822925141770390} + - component: {fileID: -8958570174584186611} + - component: {fileID: 8393546946202406891} + - component: {fileID: -8478621624057119167} + m_Layer: 0 + m_Name: Bullet + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2987293529414042391 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1562924000103655330} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.2} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3266538827119481022 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1562924000103655330} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &3277822925141770390 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1562924000103655330} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, 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: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!54 &-8958570174584186611 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1562924000103655330} + serializedVersion: 4 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!135 &8393546946202406891 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1562924000103655330} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &-8478621624057119167 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1562924000103655330} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e7a451ad0b53e8c0ca82f7ce15114c38, type: 3} + m_Name: + m_EditorClassIdentifier: + speed: 1 + damage: 20 diff --git a/Assets/Prefabs/Bullet.prefab.meta b/Assets/Prefabs/Bullet.prefab.meta new file mode 100644 index 0000000..574eac0 --- /dev/null +++ b/Assets/Prefabs/Bullet.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bfe7100930f24fd52b5b66832f59cfa8 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/TestScene.unity b/Assets/Scenes/TestScene.unity index affdadb..8068bc1 100644 --- a/Assets/Scenes/TestScene.unity +++ b/Assets/Scenes/TestScene.unity @@ -119,6 +119,253 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &353004301 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 353004305} + - component: {fileID: 353004304} + - component: {fileID: 353004303} + - component: {fileID: 353004302} + m_Layer: 0 + m_Name: Enemy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &353004302 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 353004301} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &353004303 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 353004301} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, 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: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &353004304 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 353004301} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &353004305 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 353004301} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 2, z: 4} + m_LocalScale: {x: 1, y: 2, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &851709644 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 851709645} + - component: {fileID: 851709648} + - component: {fileID: 851709647} + - component: {fileID: 851709646} + m_Layer: 0 + m_Name: Pistol + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &851709645 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 851709644} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.5, y: -0.5, z: 0.5} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1183564512} + m_Father: {fileID: 1039096618} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &851709646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 851709644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9b5e56940d7855caeb2d584265db0624, type: 3} + m_Name: + m_EditorClassIdentifier: + projectilePrefab: {fileID: 1562924000103655330, guid: bfe7100930f24fd52b5b66832f59cfa8, type: 3} + spawnPosition: {fileID: 1183564512} + fireRate: 1 +--- !u!23 &851709647 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 851709644} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, 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: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &851709648 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 851709644} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1039096618 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 4506534449155536579, guid: 53e225dcb536a6f46b5844bb8db07fe4, type: 3} + m_PrefabInstance: {fileID: 3997104640432974468} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1183564511 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1183564512} + m_Layer: 0 + m_Name: Muzzle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1183564512 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1183564511} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 851709645} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1560783767 GameObject: m_ObjectHideFlags: 0 @@ -402,9 +649,34 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 4506534449155536579, guid: 53e225dcb536a6f46b5844bb8db07fe4, type: 3} + insertIndex: -1 + addedObject: {fileID: 851709645} + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 9016311960615966999, guid: 53e225dcb536a6f46b5844bb8db07fe4, type: 3} + insertIndex: -1 + addedObject: {fileID: 3997104640432974471} m_SourcePrefab: {fileID: 100100000, guid: 53e225dcb536a6f46b5844bb8db07fe4, type: 3} +--- !u!1 &3997104640432974470 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 9016311960615966999, guid: 53e225dcb536a6f46b5844bb8db07fe4, type: 3} + m_PrefabInstance: {fileID: 3997104640432974468} + m_PrefabAsset: {fileID: 0} +--- !u!114 &3997104640432974471 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3997104640432974470} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f3724861d6ef4a112910a3ef14207757, type: 3} + m_Name: + m_EditorClassIdentifier: + weapons: [] + currentWeapon: 0 --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 @@ -412,3 +684,4 @@ SceneRoots: - {fileID: 1560783769} - {fileID: 1692628191} - {fileID: 3997104640432974468} + - {fileID: 353004305} diff --git a/Assets/Scripts/BulletProjectile.cs b/Assets/Scripts/BulletProjectile.cs new file mode 100644 index 0000000..708e1eb --- /dev/null +++ b/Assets/Scripts/BulletProjectile.cs @@ -0,0 +1,30 @@ +using UnityEngine; + +public class BulletProjectile : MonoBehaviour +{ + public float speed = 1f; + public float damage = 20f; + public float timeToLive = 5f; + + float currentTime = 0; + + Rigidbody rb; + + void Start() { + rb = GetComponent(); + rb.linearVelocity = transform.forward * speed; + } + + void Update() { + currentTime += Time.deltaTime; + if (currentTime >= timeToLive) Destroy(gameObject); + } + + void OnTriggerEnter(Collider other) { + if (other.gameObject.CompareTag("Enemy")) { + Enemy enemy = other.GetComponent(); + enemy.DealDamage(damage); + } + Destroy(gameObject); + } +} diff --git a/Assets/Scripts/BulletProjectile.cs.meta b/Assets/Scripts/BulletProjectile.cs.meta new file mode 100644 index 0000000..e2737cf --- /dev/null +++ b/Assets/Scripts/BulletProjectile.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e7a451ad0b53e8c0ca82f7ce15114c38 \ No newline at end of file diff --git a/Assets/Scripts/Enemy.cs b/Assets/Scripts/Enemy.cs new file mode 100644 index 0000000..55e8cc3 --- /dev/null +++ b/Assets/Scripts/Enemy.cs @@ -0,0 +1,12 @@ +using UnityEditor.Embree; +using UnityEngine; + +public class Enemy : MonoBehaviour +{ + public float hp = 100f; + + public void DealDamage(float damage) { + hp -= damage; + if (hp <= 0) Destroy(gameObject); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Enemy.cs.meta b/Assets/Scripts/Enemy.cs.meta new file mode 100644 index 0000000..4c0ab07 --- /dev/null +++ b/Assets/Scripts/Enemy.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 46894d927b8e6654487b876457ca8974 \ No newline at end of file diff --git a/Assets/Scripts/Pistol.cs b/Assets/Scripts/Pistol.cs new file mode 100644 index 0000000..e02287f --- /dev/null +++ b/Assets/Scripts/Pistol.cs @@ -0,0 +1,21 @@ +using UnityEngine; + +public class Pistol : Weapon +{ + public GameObject projectilePrefab; + public Transform spawnPosition; + public float fireRate = 1f; + + float currentDelay = 0; + + public override void Shoot(bool keyDown, bool keyHold) { + if (keyDown && (fireRate == 0 || currentDelay == 1 / fireRate)) { + Instantiate(projectilePrefab, spawnPosition.position, transform.rotation); + currentDelay = 0; + } + } + + void Update() { + if (fireRate != 0) currentDelay = Mathf.Clamp(currentDelay += Time.deltaTime, 0, 1 / fireRate); + } +} diff --git a/Assets/Scripts/Pistol.cs.meta b/Assets/Scripts/Pistol.cs.meta new file mode 100644 index 0000000..2f5d591 --- /dev/null +++ b/Assets/Scripts/Pistol.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9b5e56940d7855caeb2d584265db0624 \ No newline at end of file diff --git a/Assets/Scripts/Weapon.cs b/Assets/Scripts/Weapon.cs new file mode 100644 index 0000000..2d2b424 --- /dev/null +++ b/Assets/Scripts/Weapon.cs @@ -0,0 +1,13 @@ +using UnityEngine; + +public abstract class Weapon : MonoBehaviour +{ + public bool isActive { get; private set; } = true; + + public abstract void Shoot(bool keyDown, bool keyHold); + + public void SetWeaponState(bool active) { + isActive = active; + GetComponent().enabled = active; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Weapon.cs.meta b/Assets/Scripts/Weapon.cs.meta new file mode 100644 index 0000000..ca75d86 --- /dev/null +++ b/Assets/Scripts/Weapon.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 918a4cc8f96795ab080e3de45b90632c \ No newline at end of file diff --git a/Assets/Scripts/WeaponController.cs b/Assets/Scripts/WeaponController.cs new file mode 100644 index 0000000..97bf87f --- /dev/null +++ b/Assets/Scripts/WeaponController.cs @@ -0,0 +1,19 @@ +using System.Collections.Generic; +using UnityEngine; + +public class WeaponController : MonoBehaviour +{ + [SerializeField] Weapon[] weapons; + [SerializeField] int currentWeapon = 0; + + void Start() { + weapons = GetComponentsInChildren(); + for (int i = 0; i < weapons.Length; ++i) { + if (i != currentWeapon) weapons[i].SetWeaponState(false); + } + } + + void Update() { + if (Input.GetMouseButton(0) && weapons[currentWeapon].isActive) weapons[currentWeapon].Shoot(Input.GetMouseButtonDown(0), Input.GetMouseButton(0)); + } +} diff --git a/Assets/Scripts/WeaponController.cs.meta b/Assets/Scripts/WeaponController.cs.meta new file mode 100644 index 0000000..c4b3c5e --- /dev/null +++ b/Assets/Scripts/WeaponController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f3724861d6ef4a112910a3ef14207757 \ No newline at end of file diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 4539691..2aee36e 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -3,7 +3,8 @@ --- !u!78 &1 TagManager: serializedVersion: 3 - tags: [] + tags: + - Enemy layers: - Default - TransparentFX From 0cfc5482d611cfe423f958bdf8355c73bf7398b0 Mon Sep 17 00:00:00 2001 From: KOSMOGOR Date: Sat, 8 Mar 2025 22:42:02 +0300 Subject: [PATCH 2/2] fix: saved scene --- Assets/Scenes/TestScene.unity | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Assets/Scenes/TestScene.unity b/Assets/Scenes/TestScene.unity index 8068bc1..1b79846 100644 --- a/Assets/Scenes/TestScene.unity +++ b/Assets/Scenes/TestScene.unity @@ -131,9 +131,10 @@ GameObject: - component: {fileID: 353004304} - component: {fileID: 353004303} - component: {fileID: 353004302} + - component: {fileID: 353004306} m_Layer: 0 m_Name: Enemy - m_TagString: Untagged + m_TagString: Enemy m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 @@ -227,6 +228,19 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &353004306 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 353004301} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 46894d927b8e6654487b876457ca8974, type: 3} + m_Name: + m_EditorClassIdentifier: + hp: 100 --- !u!1 &851709644 GameObject: m_ObjectHideFlags: 0