diff --git a/Assets/Scripts/Orb.meta b/Assets/Scripts/Orb.meta
new file mode 100644
index 0000000000000000000000000000000000000000..46a5e9bb9a3eea960059c4a73be13242b6b19b86
--- /dev/null
+++ b/Assets/Scripts/Orb.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5466fb5032e286a4590fcba6ffc3598e
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Orb/Damage.cs b/Assets/Scripts/Orb/Damage.cs
new file mode 100644
index 0000000000000000000000000000000000000000..273180fc5485b60af43223043c5559f7d32c820c
--- /dev/null
+++ b/Assets/Scripts/Orb/Damage.cs
@@ -0,0 +1,29 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class Damage : MonoBehaviour
+{
+    public float damageAdd = 10f; // Add damage by 10
+    public GameObject effect;
+    void OnTriggerEnter(Collider other)
+    {
+        if (other.CompareTag("Player"))
+        {
+            Pickup(other); // Actions that will called up when player takes an orb
+        }
+    }
+    void Pickup(Collider player)
+    {
+        Instantiate(effect, transform.position, transform.rotation);
+        PlayerDamage playerDamage = player.GetComponent<PlayerDamage>(); // Get damage data
+        playerDamage.damageCurrent += damageAdd; // Add the damage
+
+        if (playerDamage.damageCurrent > 250f)
+        {
+            playerDamage.damageCurrent = 250f;// Limit damage to 250
+        }
+
+        Destroy(gameObject); // Self-destroy
+    }
+}
diff --git a/Assets/Scripts/Orb/Damage.cs.meta b/Assets/Scripts/Orb/Damage.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..9b8fefc60effc722893bea8133659024007ec02a
--- /dev/null
+++ b/Assets/Scripts/Orb/Damage.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e89e59f183d7a3a469b356b2fe31d488
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Orb/Health.cs b/Assets/Scripts/Orb/Health.cs
new file mode 100644
index 0000000000000000000000000000000000000000..36693ef8977e57557652f33f16fe0598a9cf78f4
--- /dev/null
+++ b/Assets/Scripts/Orb/Health.cs
@@ -0,0 +1,29 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class Health : MonoBehaviour
+{
+    public float healthAdd = 20f; // Add health by 20
+    public GameObject effect;
+    void OnTriggerEnter(Collider other)
+    {
+        if (other.CompareTag("Player"))
+        {
+            Pickup(other); // Actions that will called up when player takes an orb
+        }
+    }
+    void Pickup(Collider player)
+    {
+        Instantiate(effect, transform.position, transform.rotation);
+        PlayerHealth playerHealth = player.GetComponent<PlayerHealth>(); // Get health data
+        playerHealth.healthCurrent += healthAdd; // Add the health
+
+        if (playerHealth.healthCurrent > 100f)
+        {
+            playerHealth.healthCurrent = 100f;// Limit health to 100
+        }
+
+        Destroy(gameObject); // Self-destroy
+    }
+}
diff --git a/Assets/Scripts/Orb/Health.cs.meta b/Assets/Scripts/Orb/Health.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..a41f3d28829e9d41585b3ed9dd0bc7f78ba2b862
--- /dev/null
+++ b/Assets/Scripts/Orb/Health.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 18d70f82422cbf44988bfe6bfffa985a
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/Orb/Speed.cs b/Assets/Scripts/Orb/Speed.cs
new file mode 100644
index 0000000000000000000000000000000000000000..0d748bf0fd42484e28abfb567849f4baf222bccc
--- /dev/null
+++ b/Assets/Scripts/Orb/Speed.cs
@@ -0,0 +1,39 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class Speed : MonoBehaviour
+{
+    public float speedMultiply = 1.2f; // Multiply speed by 20%
+    public float speedDuration = 2f; // Duration of speed
+    public GameObject effect;
+
+    private float startSpeed;
+
+    void OnTriggerEnter(Collider other)
+    {
+        if (other.CompareTag("Player"))
+        {
+            Pickup(other); // Actions that will called up when player takes an orb
+        }
+    }
+
+    IEnumerator SpeedPickUp(Collider player)
+    {
+        ThirdPersonMovement playerSpeed = player.GetComponent<ThirdPersonMovement>(); // Get speed data
+        startSpeed = playerSpeed.speed; // Initial speed
+        playerSpeed.speed *= speedMultiply; // Takes the speed up by 20%
+        yield return new WaitForSeconds(speedDuration);
+        playerSpeed.speed = startSpeed; // Speed go back to normal
+    }
+
+    void Pickup(Collider player)
+    {
+        StartCoroutine(SpeedPickUp(player));
+
+        Instantiate(effect, transform.position, transform.rotation);
+
+        Destroy(gameObject); // Self-destroy
+    }
+}
+
diff --git a/Assets/Scripts/Orb/Speed.cs.meta b/Assets/Scripts/Orb/Speed.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..c3f1b3cebe641bdac8ceddcb75c683e89071fcb0
--- /dev/null
+++ b/Assets/Scripts/Orb/Speed.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a43b1d4718f86bd4ab373b9fd7387848
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: