From d1ff8dc0a0877a3a95897482757207594276fe10 Mon Sep 17 00:00:00 2001 From: kelvinra <13521005@mahasiswa.itb.ac.id> Date: Wed, 8 May 2024 04:01:05 +0700 Subject: [PATCH] fix: shotgun mechanism --- Assets/Scenes/FinalStage.unity | 232 +++++++++++++++++++++++++++++- Assets/Script/Weapon/GunSystem.cs | 34 +++-- 2 files changed, 256 insertions(+), 10 deletions(-) diff --git a/Assets/Scenes/FinalStage.unity b/Assets/Scenes/FinalStage.unity index 0a5881a8..cf2a6585 100644 --- a/Assets/Scenes/FinalStage.unity +++ b/Assets/Scenes/FinalStage.unity @@ -519,6 +519,37 @@ GameObject: type: 3} m_PrefabInstance: {fileID: 48917071} m_PrefabAsset: {fileID: 0} +--- !u!1 &64878399 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 64878400} + m_Layer: 8 + m_Name: BulletSpawn (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &64878400 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 64878399} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 1, z: -0, w: -0} + m_LocalPosition: {x: -0, y: -0.02, z: -0.518} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1060462846} + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} --- !u!1001 &74854220 PrefabInstance: m_ObjectHideFlags: 0 @@ -1106,6 +1137,37 @@ MeshCollider: m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 5802728319306342755, guid: 64861ff52786dae46891015bd91c9696, type: 3} +--- !u!1 &176447399 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 176447400} + m_Layer: 8 + m_Name: BulletSpawn (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &176447400 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 176447399} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 1, z: -0, w: -0} + m_LocalPosition: {x: -0.031, y: 0, z: -0.518} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1060462846} + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} --- !u!1 &177394701 stripped GameObject: m_CorrespondingSourceObject: {fileID: -2353074075898825809, guid: 64861ff52786dae46891015bd91c9696, @@ -4443,7 +4505,7 @@ PrefabInstance: - target: {fileID: 8375146908231575235, guid: f2eb78a592a2b6c428c7793ce6cdf576, type: 3} propertyPath: m_IsActive - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8544868449765012199, guid: f2eb78a592a2b6c428c7793ce6cdf576, type: 3} @@ -5895,6 +5957,12 @@ GameObject: type: 3} m_PrefabInstance: {fileID: 1230702347393119482} m_PrefabAsset: {fileID: 0} +--- !u!4 &1060462846 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 5976679158350016669, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + m_PrefabInstance: {fileID: 1230702347393119482} + m_PrefabAsset: {fileID: 0} --- !u!1 &1064267017 stripped GameObject: m_CorrespondingSourceObject: {fileID: 4981614246025915001, guid: 4287a988eebd12d43a804c65bd28f674, @@ -6898,6 +6966,37 @@ MeshCollider: m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 4300000, guid: 39f986a30f285f94a8665b2d26074ac6, type: 2} +--- !u!1 &1192399159 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1192399160} + m_Layer: 8 + m_Name: BulletSpawn (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1192399160 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1192399159} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 1, z: -0, w: -0} + m_LocalPosition: {x: -0.001, y: -0, z: -0.519} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1060462846} + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} --- !u!1 &1239668667 stripped GameObject: m_CorrespondingSourceObject: {fileID: 4209707228193510765, guid: 64861ff52786dae46891015bd91c9696, @@ -7054,6 +7153,37 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 5b3a31262535169488bf56829a95c649, type: 3} +--- !u!1 &1273201483 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1273201484} + m_Layer: 8 + m_Name: BulletSpawn (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1273201484 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1273201483} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: 1, z: -0, w: -0} + m_LocalPosition: {x: 0.029, y: -0.001, z: -0.522} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1060462846} + m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} --- !u!1 &1290190477 stripped GameObject: m_CorrespondingSourceObject: {fileID: -1917485985604544642, guid: 64861ff52786dae46891015bd91c9696, @@ -8704,6 +8834,12 @@ MeshCollider: m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: -1774443476973282442, guid: 64861ff52786dae46891015bd91c9696, type: 3} +--- !u!4 &1875083792 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3726212686999025875, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + m_PrefabInstance: {fileID: 1230702347393119482} + m_PrefabAsset: {fileID: 0} --- !u!1 &1886379302 stripped GameObject: m_CorrespondingSourceObject: {fileID: -2328034413869138055, guid: 64861ff52786dae46891015bd91c9696, @@ -8760,6 +8896,12 @@ MeshCollider: m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: -1192489347816665101, guid: 64861ff52786dae46891015bd91c9696, type: 3} +--- !u!4 &1901121418 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2091413681029210129, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + m_PrefabInstance: {fileID: 1230702347393119482} + m_PrefabAsset: {fileID: 0} --- !u!1 &1909382987 stripped GameObject: m_CorrespondingSourceObject: {fileID: -6723147350392908901, guid: 64861ff52786dae46891015bd91c9696, @@ -10053,6 +10195,11 @@ PrefabInstance: propertyPath: m_Name value: Player objectReference: {fileID: 0} + - target: {fileID: 784376659181270425, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 1103565723064722578, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, type: 3} propertyPath: m_LocalPosition.x @@ -10118,16 +10265,46 @@ PrefabInstance: propertyPath: frontHealthBar value: objectReference: {fileID: 741858955} + - target: {fileID: 2981792840176031697, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3726212686999025875, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.022 + objectReference: {fileID: 0} + - target: {fileID: 3726212686999025875, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.523 + objectReference: {fileID: 0} - target: {fileID: 5091868173003121813, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, type: 3} propertyPath: playerName value: objectReference: {fileID: 1350751839} + - target: {fileID: 5331872195551136735, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 6175774498415436418, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, type: 3} propertyPath: ammo value: objectReference: {fileID: 475539529} + - target: {fileID: 6175774498415436418, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + propertyPath: attackPoints.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6175774498415436418, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + propertyPath: attackPoints.Array.data[0] + value: + objectReference: {fileID: 1901121418} - target: {fileID: 6195091973566671339, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, type: 3} propertyPath: back @@ -10168,6 +10345,36 @@ PrefabInstance: propertyPath: crossHair value: objectReference: {fileID: 420249870} + - target: {fileID: 8904355535743393918, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + propertyPath: attackPoints.Array.size + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 8904355535743393918, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + propertyPath: attackPoints.Array.data[0] + value: + objectReference: {fileID: 1192399160} + - target: {fileID: 8904355535743393918, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + propertyPath: attackPoints.Array.data[1] + value: + objectReference: {fileID: 1875083792} + - target: {fileID: 8904355535743393918, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + propertyPath: attackPoints.Array.data[2] + value: + objectReference: {fileID: 1273201484} + - target: {fileID: 8904355535743393918, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + propertyPath: attackPoints.Array.data[3] + value: + objectReference: {fileID: 64878400} + - target: {fileID: 8904355535743393918, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + propertyPath: attackPoints.Array.data[4] + value: + objectReference: {fileID: 176447400} - target: {fileID: 9077723235107537700, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, type: 3} propertyPath: promptText @@ -10175,7 +10382,23 @@ PrefabInstance: objectReference: {fileID: 2040588994} m_RemovedComponents: [] m_RemovedGameObjects: [] - m_AddedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 5976679158350016669, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + insertIndex: -1 + addedObject: {fileID: 1273201484} + - targetCorrespondingSourceObject: {fileID: 5976679158350016669, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + insertIndex: -1 + addedObject: {fileID: 64878400} + - targetCorrespondingSourceObject: {fileID: 5976679158350016669, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + insertIndex: -1 + addedObject: {fileID: 176447400} + - targetCorrespondingSourceObject: {fileID: 5976679158350016669, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, + type: 3} + insertIndex: -1 + addedObject: {fileID: 1192399160} m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 51cde55a2a5a5c3448cd8df1ab6225dd, type: 3} --- !u!1001 &2051426342151953533 @@ -10378,6 +10601,11 @@ PrefabInstance: propertyPath: wave value: objectReference: {fileID: 1304587568} + - target: {fileID: 870523360220851781, guid: da6f8a21a762b8b449958966637f7373, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 1982862773161798682, guid: da6f8a21a762b8b449958966637f7373, type: 3} propertyPath: m_LocalPosition.x diff --git a/Assets/Script/Weapon/GunSystem.cs b/Assets/Script/Weapon/GunSystem.cs index 2435ed7c..76a94537 100644 --- a/Assets/Script/Weapon/GunSystem.cs +++ b/Assets/Script/Weapon/GunSystem.cs @@ -20,7 +20,7 @@ public class GunSystem : MonoBehaviour public Camera cam; public InputManager inputManager; - public Transform attackPoint; + public List<Transform> attackPoints = new List<Transform>(); public RaycastHit hit; public LayerMask whatIsEnemy; @@ -94,10 +94,10 @@ public class GunSystem : MonoBehaviour private void Shoot() { GlobalPreference.Instance.BulletShot(); - Vector3 shootingDirection = CalculateDirectionAndSpread().normalized; - for (int i = 0; i < bulletsperTap; i++) + for(int i = 0; i < attackPoints.Count; i++) { - GameObject bullet = Instantiate(bulletProjectile, attackPoint.position, Quaternion.identity); + Vector3 shootingDirection = CalculateDirectionAndSpread(i).normalized; + GameObject bullet = Instantiate(bulletProjectile, attackPoints[i].position, Quaternion.identity); Bullet bull = bullet.GetComponent<Bullet>(); bull.damage = damage; bull.target = "Enemy"; @@ -144,7 +144,7 @@ public class GunSystem : MonoBehaviour gameObject.GetComponent<Collider>().enabled = false; } - public Vector3 CalculateDirectionAndSpread() + public Vector3 CalculateDirectionAndSpread(int i) { Ray ray = cam.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0)); RaycastHit hit; @@ -159,10 +159,28 @@ public class GunSystem : MonoBehaviour targetPoint = ray.GetPoint(100); } - Vector3 direction = targetPoint - attackPoint.position; + Vector3 direction = targetPoint - attackPoints[i].position; - float x = Random.Range(-spread, spread); - float y = Random.Range(-spread, spread); + /*float x = Random.Range(-spread, spread); + float y = Random.Range(-spread, spread);*/ + float x = 0; + float y = 0; + if (i == 1) + { + y = 0.75f; + } + else if (i == 2) + { + x = -0.75f; + } + else if (i == 3) + { + y = -0.75f; + } + else if (i == 4) + { + x = 0.75f; + } return direction + new Vector3(x, y, 0); } -- GitLab