diff --git a/Assets/Prefabs/Enemies/ZomBunny.prefab b/Assets/Prefabs/Enemies/ZomBunny.prefab index 9432464cccbbc2d84016b7d91edc9de9d72674a0..28c046dacdeb4f716461a040934130bcafb64892 100644 --- a/Assets/Prefabs/Enemies/ZomBunny.prefab +++ b/Assets/Prefabs/Enemies/ZomBunny.prefab @@ -129,7 +129,6 @@ Transform: - {fileID: 400004} - {fileID: 400000} - {fileID: 400006} - - {fileID: 6547720465102604794} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!95 &9500000 @@ -10133,6 +10132,7 @@ ParticleSystemRenderer: m_RendererPriority: 0 m_Materials: - {fileID: 2100000, guid: 01ffe1f3679a0894087ea5e74106fb93, type: 2} + - {fileID: 0} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -10279,106 +10279,3 @@ Light: m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 ---- !u!1001 &6543935073854708690 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 400002} - m_Modifications: - - target: {fileID: 1711279095464942, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - propertyPath: m_Name - value: MoonSword 1b - objectReference: {fileID: 0} - - target: {fileID: 4107041482953256, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - propertyPath: m_LocalScale.x - value: 0.8 - objectReference: {fileID: 0} - - target: {fileID: 4107041482953256, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - propertyPath: m_LocalScale.y - value: 0.6 - objectReference: {fileID: 0} - - target: {fileID: 4107041482953256, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - propertyPath: m_LocalScale.z - value: 0.8 - objectReference: {fileID: 0} - - target: {fileID: 4107041482953256, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - propertyPath: m_LocalPosition.x - value: 0.4 - objectReference: {fileID: 0} - - target: {fileID: 4107041482953256, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - propertyPath: m_LocalPosition.y - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 4107041482953256, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - propertyPath: m_LocalPosition.z - value: 0.4 - objectReference: {fileID: 0} - - target: {fileID: 4107041482953256, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - propertyPath: m_LocalRotation.w - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 4107041482953256, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - propertyPath: m_LocalRotation.x - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 4107041482953256, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4107041482953256, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4107041482953256, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 90 - objectReference: {fileID: 0} - - target: {fileID: 4107041482953256, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4107041482953256, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: - - targetCorrespondingSourceObject: {fileID: 1711279095464942, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - insertIndex: -1 - addedObject: {fileID: 1475174897756527319} - m_SourcePrefab: {fileID: 100100000, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} ---- !u!1 &6545610567079204924 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 1711279095464942, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - m_PrefabInstance: {fileID: 6543935073854708690} - m_PrefabAsset: {fileID: 0} ---- !u!65 &1475174897756527319 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6545610567079204924} - 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: 0.42668682, y: 1.7367153, z: 0.09593994} - m_Center: {x: 0, y: 0.66078556, z: 0.00000001303852} ---- !u!4 &6547720465102604794 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 4107041482953256, guid: d8b3796a4e3c855478f115e4766a895c, type: 3} - m_PrefabInstance: {fileID: 6543935073854708690} - m_PrefabAsset: {fileID: 0} diff --git a/Assets/Prefabs/Player.prefab b/Assets/Prefabs/Player.prefab index 73c140b6014f6f796479935df6f6d9abf2b9a671..5a6d66409a825e1bb95ac1d49f28e25b8e7ee87e 100644 --- a/Assets/Prefabs/Player.prefab +++ b/Assets/Prefabs/Player.prefab @@ -10,7 +10,7 @@ GameObject: m_Component: - component: {fileID: 400000} - component: {fileID: 13700000} - m_Layer: 6 + m_Layer: 0 m_Name: Player m_TagString: Untagged m_Icon: {fileID: 0} @@ -95,7 +95,7 @@ GameObject: m_Component: - component: {fileID: 400002} - component: {fileID: 13700002} - m_Layer: 6 + m_Layer: 0 m_Name: Gun m_TagString: Untagged m_Icon: {fileID: 0} @@ -185,7 +185,7 @@ GameObject: - component: {fileID: 12000000} - component: {fileID: 11400000} - component: {fileID: 10800000} - m_Layer: 6 + m_Layer: 0 m_Name: GunBarrelEnd m_TagString: Untagged m_Icon: {fileID: 0} @@ -5391,7 +5391,7 @@ GameObject: - component: {fileID: 13600000} - component: {fileID: 8200002} - component: {fileID: 9039977707415807151} - m_Layer: 6 + m_Layer: 0 m_Name: Player m_TagString: Player m_Icon: {fileID: 0} @@ -5638,7 +5638,7 @@ GameObject: m_Component: - component: {fileID: 400008} - component: {fileID: 10800002} - m_Layer: 6 + m_Layer: 0 m_Name: FaceLight m_TagString: Untagged m_Icon: {fileID: 0} @@ -5731,7 +5731,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 8997193238200672011} - m_Layer: 6 + m_Layer: 0 m_Name: Default m_TagString: Untagged m_Icon: {fileID: 0} @@ -5765,7 +5765,7 @@ GameObject: m_Component: - component: {fileID: 8762545912576295216} - component: {fileID: 5721332875106761620} - m_Layer: 6 + m_Layer: 0 m_Name: Weapons m_TagString: Untagged m_Icon: {fileID: 0} @@ -5811,7 +5811,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 2229189631820467177} - m_Layer: 6 + m_Layer: 0 m_Name: Sword m_TagString: Untagged m_Icon: {fileID: 0} @@ -5843,7 +5843,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 5881081989059531979} - m_Layer: 6 + m_Layer: 0 m_Name: Shotgun m_TagString: Untagged m_Icon: {fileID: 0} @@ -5878,7 +5878,7 @@ GameObject: - component: {fileID: 8263715704072058757} - component: {fileID: 2237919186314458316} - component: {fileID: 2200019198424883589} - m_Layer: 6 + m_Layer: 0 m_Name: SwordAttack m_TagString: Untagged m_Icon: {fileID: 0} @@ -5944,7 +5944,7 @@ GameObject: m_Component: - component: {fileID: 5502312865022624580} - component: {fileID: 482007001229305827} - m_Layer: 6 + m_Layer: 0 m_Name: FaceLight m_TagString: Untagged m_Icon: {fileID: 0} @@ -6043,7 +6043,7 @@ GameObject: - component: {fileID: 4411055977104296898} - component: {fileID: 7830425590893830298} - component: {fileID: 5416872962971171281} - m_Layer: 6 + m_Layer: 0 m_Name: GunBarrelEnd m_TagString: Untagged m_Icon: {fileID: 0} @@ -11242,22 +11242,10 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 2229189631820467177} m_Modifications: - - target: {fileID: 1105315487503178, guid: 9e3ccb5d46edb7e4095888928abdaa2e, type: 3} - propertyPath: m_Layer - value: 6 - objectReference: {fileID: 0} - - target: {fileID: 1749659106864458, guid: 9e3ccb5d46edb7e4095888928abdaa2e, type: 3} - propertyPath: m_Layer - value: 6 - objectReference: {fileID: 0} - target: {fileID: 1821482385955872, guid: 9e3ccb5d46edb7e4095888928abdaa2e, type: 3} propertyPath: m_Name value: MoonSword 2b objectReference: {fileID: 0} - - target: {fileID: 1821482385955872, guid: 9e3ccb5d46edb7e4095888928abdaa2e, type: 3} - propertyPath: m_Layer - value: 6 - objectReference: {fileID: 0} - target: {fileID: 4775197332251522, guid: 9e3ccb5d46edb7e4095888928abdaa2e, type: 3} propertyPath: m_LocalPosition.x value: 0.4 @@ -11347,14 +11335,6 @@ PrefabInstance: propertyPath: m_Name value: Shotgun objectReference: {fileID: 0} - - target: {fileID: 1624697429439270, guid: eedb02d5022eae8419dfe61ce8b8db75, type: 3} - propertyPath: m_Layer - value: 6 - objectReference: {fileID: 0} - - target: {fileID: 1987405700366004, guid: eedb02d5022eae8419dfe61ce8b8db75, type: 3} - propertyPath: m_Layer - value: 6 - objectReference: {fileID: 0} - target: {fileID: 4072197404026632, guid: eedb02d5022eae8419dfe61ce8b8db75, type: 3} propertyPath: m_LocalScale.x value: 0.61 diff --git a/Assets/Scripts/Enemy/EnemyShotgun.cs b/Assets/Scripts/Enemy/EnemyShotgun.cs new file mode 100644 index 0000000000000000000000000000000000000000..770aa6aa5b18c431d1b19e075c62127b9a019cf1 --- /dev/null +++ b/Assets/Scripts/Enemy/EnemyShotgun.cs @@ -0,0 +1,177 @@ +using UnityEngine; +using UnityEngine.Events; +using System.Text; +using UnitySampleAssets.CrossPlatformInput; +using System; +using System.Collections.Generic; + +namespace Nightmare +{ + public class EnemyShotgun : PausibleObject + { + public int damagePerShot = 5; + public int bullets = 6; + public float timeBetweenBullets = 0.15f; + public float range = 100f; + public float autoShootInterval = 5f; // Time interval between automatic shots + + private float autoShootTimer = 0f; // Timer to track automatic shooting + + float timer; + Ray shootRay = new Ray(); + RaycastHit shootHit; + int shootableMask; + ParticleSystem gunParticles; + LineRenderer gunLine; + AudioSource gunAudio; + Light gunLight; + public Light faceLight; + float effectsDisplayTime = 0.2f; + float multiplier; + + private UnityAction listener; + private List<GameObject> lineRendererList = new List<GameObject>(); + + void Awake() + { + // Create a layer mask for the Shootable layer. + shootableMask = LayerMask.GetMask("Shootable", "Player"); + + // Set up the references. + gunParticles = GetComponent<ParticleSystem>(); + gunLine = GetComponent<LineRenderer>(); + gunAudio = GetComponent<AudioSource>(); + gunLight = GetComponent<Light>(); + multiplier = CurrentStateData.GetMultiplier(); + //faceLight = GetComponentInChildren<Light> (); + + StartPausible(); + } + + void OnDestroy() + { + StopPausible(); + } + + void Update() + { + if (isPaused) + return; + + // Add the time since Update was last called to the timer. + timer += Time.deltaTime; + autoShootTimer += Time.deltaTime; + +#if !MOBILE_INPUT + if (timer >= timeBetweenBullets && Time.timeScale != 0) + { + + if (autoShootTimer >= autoShootInterval) + { + if (QuestManager.IsQuestCompleted()) + { + return; + } + // ... shoot the gun. + autoShootTimer = 0f; + Shoot(); + } + } + +#else + // If there is input on the shoot direction stick and it's time to fire... + if ((CrossPlatformInputManager.GetAxisRaw("Mouse X") != 0 || CrossPlatformInputManager.GetAxisRaw("Mouse Y") != 0) && timer >= timeBetweenBullets) + { + // ... shoot the gun + Shoot(); + } +#endif + // If the timer has exceeded the proportion of timeBetweenBullets that the effects should be displayed for... + if (timer >= timeBetweenBullets * effectsDisplayTime) + { + // ... disable the effects. + DisableEffects(); + } + } + + + public void DisableEffects() + { + // Disable the line renderer and the light. + gunLine.enabled = false; + faceLight.enabled = false; + gunLight.enabled = false; + lineRendererList.ForEach((lineRenderer) => + { + Destroy(lineRenderer); + }); + lineRendererList.Clear(); + } + + + private void Shoot() + { + timer = 0f; + gunParticles.Stop(); + gunParticles.Play(); + gunLight.enabled = true; + gunAudio.Play(); + + var position = transform.position; + shootRay.origin = position; + + for (var i = 0; i < 7; i++) + { + GameObject obj = new GameObject("Line"); + var lineRenderer = obj.AddComponent<LineRenderer>(); + lineRenderer.startWidth = 0.05f; + lineRenderer.endWidth = 0.05f; + lineRenderer.SetPosition(0, position); + + // Create a material with the desired color + Material lineMaterial = new Material(Shader.Find("Sprites/Default")); + lineMaterial.color = Color.yellow; // Change this color to your desired color + + // Assign the material to the LineRenderer + lineRenderer.material = lineMaterial; + + var forward = transform.forward; + var direction = forward + UnityEngine.Random.insideUnitSphere * 0.15f; + shootRay.direction = direction; + + if (Physics.Raycast(shootRay, out shootHit, range, shootableMask)) + { + var playerHealth = shootHit.collider.GetComponent<PlayerHealth>(); + + if (playerHealth) + { + multiplier = CurrentStateData.GetMultiplier(); + var distance = Vector3.Distance(transform.position, shootHit.point); + var damageDistanceFactor = 1f - Mathf.Clamp01(distance / 20f); + var damage = Mathf.RoundToInt(damagePerShot * damageDistanceFactor); + playerHealth.TakeDamage(Mathf.RoundToInt(damage)); + } + + lineRenderer.SetPosition(1, shootHit.point); + lineRendererList.Add(obj); + } + else + { + lineRenderer.SetPosition(1, shootRay.origin + shootRay.direction * range); + lineRendererList.Add(obj); + } + } + } + + private void ChangeGunLine(float midPoint) + { + AnimationCurve curve = new AnimationCurve(); + + curve.AddKey(0f, 0f); + curve.AddKey(midPoint, 0.5f); + curve.AddKey(1f, 1f); + + gunLine.widthCurve = curve; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Enemy/EnemyShotgun.cs.meta b/Assets/Scripts/Enemy/EnemyShotgun.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..67c2fd07b0bf3beda0265e3a137510f6a6460b44 --- /dev/null +++ b/Assets/Scripts/Enemy/EnemyShotgun.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b99bf021a841f62448f843d20a4ee887 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: