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