diff --git a/BlueWater/Assets/01.Scenes/02.Main_TG.unity b/BlueWater/Assets/01.Scenes/02.Main_TG.unity index cafccf2b1..0f1fa1dc9 100644 --- a/BlueWater/Assets/01.Scenes/02.Main_TG.unity +++ b/BlueWater/Assets/01.Scenes/02.Main_TG.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.17941369, g: 0.2246505, b: 0.30630845, a: 1} + m_IndirectSpecularColor: {r: 0.1794142, g: 0.22465113, b: 0.3063095, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &4 LightmapSettings: @@ -124,6 +124,38 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &29755219 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 29755220} + m_Layer: 0 + m_Name: ObjectPoolManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &29755220 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 29755219} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1422397439} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!224 &126818807 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 3462659544343954575, guid: 05c27db3267318f4fa8757595e69a841, @@ -972,6 +1004,63 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &774643456 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 155132, guid: 2b7bae11d5e723b4597e4a3c1fd139b1, type: 3} + propertyPath: m_Name + value: SwordKnight_E + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 2b7bae11d5e723b4597e4a3c1fd139b1, type: 3} + propertyPath: m_LocalPosition.x + value: 92.73 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 2b7bae11d5e723b4597e4a3c1fd139b1, type: 3} + propertyPath: m_LocalPosition.y + value: 1.97 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 2b7bae11d5e723b4597e4a3c1fd139b1, type: 3} + propertyPath: m_LocalPosition.z + value: 39.87 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 2b7bae11d5e723b4597e4a3c1fd139b1, type: 3} + propertyPath: m_LocalRotation.w + value: 0.028407697 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 2b7bae11d5e723b4597e4a3c1fd139b1, type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 2b7bae11d5e723b4597e4a3c1fd139b1, type: 3} + propertyPath: m_LocalRotation.y + value: 0.9995964 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 2b7bae11d5e723b4597e4a3c1fd139b1, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 2b7bae11d5e723b4597e4a3c1fd139b1, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 2b7bae11d5e723b4597e4a3c1fd139b1, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 176.744 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 2b7bae11d5e723b4597e4a3c1fd139b1, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2b7bae11d5e723b4597e4a3c1fd139b1, type: 3} --- !u!1 &776161953 GameObject: m_ObjectHideFlags: 0 @@ -2034,6 +2123,37 @@ Transform: - {fileID: 3930504228161776306} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1422397438 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1422397439} + m_Layer: 0 + m_Name: Arrows + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1422397439 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1422397438} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 29755220} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1437521086 GameObject: m_ObjectHideFlags: 0 @@ -7381,6 +7501,63 @@ MonoBehaviour: amplitude: 0.5 speed: 1 direction: {x: 1, y: 0} +--- !u!1001 &1592431858 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 155132, guid: 45b324ec0934e8040876c8641587ffe2, type: 3} + propertyPath: m_Name + value: Archer_P + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 45b324ec0934e8040876c8641587ffe2, type: 3} + propertyPath: m_LocalPosition.x + value: 86.526306 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 45b324ec0934e8040876c8641587ffe2, type: 3} + propertyPath: m_LocalPosition.y + value: 2.05 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 45b324ec0934e8040876c8641587ffe2, type: 3} + propertyPath: m_LocalPosition.z + value: 20.44285 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 45b324ec0934e8040876c8641587ffe2, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 45b324ec0934e8040876c8641587ffe2, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 45b324ec0934e8040876c8641587ffe2, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 45b324ec0934e8040876c8641587ffe2, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 45b324ec0934e8040876c8641587ffe2, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 45b324ec0934e8040876c8641587ffe2, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 438990, guid: 45b324ec0934e8040876c8641587ffe2, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 45b324ec0934e8040876c8641587ffe2, type: 3} --- !u!1001 &1646060060 PrefabInstance: m_ObjectHideFlags: 0 @@ -49254,3 +49431,6 @@ SceneRoots: - {fileID: 336257752} - {fileID: 634242989} - {fileID: 202104949} + - {fileID: 29755220} + - {fileID: 1592431858} + - {fileID: 774643456} diff --git a/BlueWater/Assets/02.Scripts/Ai/AiController.cs b/BlueWater/Assets/02.Scripts/Ai/AiController.cs index d69ecfdb7..19dbc45ed 100644 --- a/BlueWater/Assets/02.Scripts/Ai/AiController.cs +++ b/BlueWater/Assets/02.Scripts/Ai/AiController.cs @@ -11,9 +11,11 @@ namespace BlueWaterProject #region Property and variable protected Animator aiAnimator; + protected FieldOfView fieldOfView; - private static readonly int DeathHash = Animator.StringToHash("Death"); - private static readonly int DamageHash = Animator.StringToHash("TakeDamage"); + protected static readonly int AttackHash = Animator.StringToHash("TakeDamage"); + protected static readonly int DamageHash = Animator.StringToHash("TakeDamage"); + protected static readonly int DeathHash = Animator.StringToHash("Death"); #endregion @@ -25,9 +27,10 @@ namespace BlueWaterProject #region Unity built-in function - private void Awake() + protected virtual void Awake() { aiAnimator = Utils.GetComponentAndAssert(transform); + fieldOfView = Utils.GetComponentAndAssert(transform); } private void Start() @@ -75,7 +78,7 @@ namespace BlueWaterProject #endregion - #region Function + #region Custom function public void SetCurrentHp(float value) => AiStat.currentHp = value; diff --git a/BlueWater/Assets/02.Scripts/Ai/FieldOfView.cs b/BlueWater/Assets/02.Scripts/Ai/FieldOfView.cs new file mode 100644 index 000000000..b3a84acff --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/FieldOfView.cs @@ -0,0 +1,93 @@ +using System; +using UnityEngine; + +// ReSharper disable once CheckNamespace +namespace BlueWaterProject +{ + public class FieldOfView : MonoBehaviour + { + #region Property and variable + + [Header("타겟 및 시야 설정")] + [SerializeField] private bool drawGizmo = true; + + [SerializeField] private LayerMask targetLayer; + + [Tooltip("시야 각도\n상대를 감지하는 0~360도 사이의 시야각")] + [Range(0f, 360f)] + [SerializeField] private float viewAngle = 360f; + + [Tooltip("시야 길이\n상대를 감지하는 최대 길이, 부채꼴 혹은 원의 반지름 길이")] + [Range(0f, 50f)] + [SerializeField] private float viewRadius; + + [Header("시야 내 타겟 정보")] + [SerializeField] private Collider[] colliderWithinRange = new Collider[TARGET_MAX_SIZE]; + [SerializeField] private Transform targetTransform; + + private const int TARGET_MAX_SIZE = 20; + + #endregion + + #region Unity built-in Function + +#if UNITY_EDITOR + public void OnDrawGizmosSelected() + { + if (!drawGizmo) return; + + var myPos = transform.position; + + Gizmos.color = Color.green; + Gizmos.DrawWireSphere(myPos, viewRadius); + + if (targetTransform == null) return; + + Debug.DrawLine(myPos, targetTransform.position, Color.red); + } +#endif + + private void LateUpdate() + { + Array.Clear(colliderWithinRange, 0, TARGET_MAX_SIZE); + + var myPos = transform.position; + var maxColliderCount = Physics.OverlapSphereNonAlloc(myPos, viewRadius, colliderWithinRange, + targetLayer, QueryTriggerInteraction.Collide); + + if (maxColliderCount <= 0) + { + targetTransform = null; + return; + } + + var nearestDistance = Vector3.Distance(colliderWithinRange[0].transform.position, myPos); + var nearestTargetTransform = colliderWithinRange[0].transform; + + for (var i = 1; i < maxColliderCount; i++) + { + var distance = Vector3.Distance(colliderWithinRange[i].transform.position, myPos); + + if (nearestDistance < distance) continue; + + nearestDistance = distance; + nearestTargetTransform = colliderWithinRange[i].transform; + } + + targetTransform = nearestTargetTransform; + + if (targetTransform == null) return; + + transform.LookAt(targetTransform); + } + + #endregion + + #region Custom Function + + public int GetTargetLayer() => targetLayer; + public Transform GetTargetTransform() => targetTransform; + + #endregion + } +} \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Ai/FieldOfView.cs.meta b/BlueWater/Assets/02.Scripts/Ai/FieldOfView.cs.meta new file mode 100644 index 000000000..eba25dcb1 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/FieldOfView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0b788620b2cca0844a3b03748ada3423 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Type/Archer.cs b/BlueWater/Assets/02.Scripts/Ai/Type/Archer.cs index 7dc576c20..6b2245f72 100644 --- a/BlueWater/Assets/02.Scripts/Ai/Type/Archer.cs +++ b/BlueWater/Assets/02.Scripts/Ai/Type/Archer.cs @@ -1,22 +1,72 @@ using System.Collections; using UnityEngine; +using UnityEngine.Pool; // ReSharper disable once CheckNamespace namespace BlueWaterProject { public class Archer : AiController { - [Header("화살 발사 시작 시간")] - [SerializeField] private float shootArrowTime; + #region Property and variable - protected override void Attack() + [Header("화살 오브젝트 관리")] + [SerializeField] private GameObject arrowPrefab; + + [Tooltip("화살 오브젝트 풀링할 최대 갯수")] + [SerializeField] private int arrowMaxSize; + + [Tooltip("화살 발사 시작 시간")] + [SerializeField] private float shootArrowTime; + + private Transform arrowsLocation; + private IObjectPool arrowPool; + + #endregion + + #region Unity Built-in Function + + protected override void Awake() { - StartCoroutine(ShootArrow()); + base.Awake(); + + arrowsLocation = GameObject.Find("ObjectPoolManager/Arrows").transform; + arrowPool = new ObjectPool(CreateArrow, OnGetBullet, OnReleaseBullet, OnDestroyBullet, maxSize:arrowMaxSize); } - private IEnumerator ShootArrow() + #endregion + + #region Custom function + + protected override void Attack() { - yield return new WaitForSeconds(shootArrowTime); + StartCoroutine(ShootArrowAnimation()); } + + private IEnumerator ShootArrowAnimation() + { + aiAnimator.SetTrigger(AttackHash); + yield return new WaitForSeconds(shootArrowTime); + + var arrow = arrowPool.Get(); + arrow.SetShootingArrow(fieldOfView.GetTargetTransform().position, AiStat, fieldOfView.GetTargetLayer()); + StartCoroutine(arrow.Shoot()); + } + + #endregion + + #region ObjectPool Function + + private Arrow CreateArrow() + { + var arrow = Instantiate(arrowPrefab, Vector3.zero, Quaternion.identity, arrowsLocation).GetComponent(); + arrow.SetManagedPool(arrowPool); + return arrow; + } + + private void OnGetBullet(Arrow arrow) => arrow.gameObject.SetActive(true); + private void OnReleaseBullet(Arrow arrow) => arrow.gameObject.SetActive(false); + private void OnDestroyBullet(Arrow arrow) => Destroy(arrow.gameObject); + + #endregion } } \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Arrow.cs b/BlueWater/Assets/02.Scripts/Arrow.cs new file mode 100644 index 000000000..fd0d33d14 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Arrow.cs @@ -0,0 +1,118 @@ +using System.Collections; +using UnityEngine; +using UnityEngine.Pool; +using Random = UnityEngine.Random; + +// ReSharper disable once CheckNamespace +namespace BlueWaterProject +{ + public class Arrow : MonoBehaviour + { + #region Property and variable + + [Tooltip("화살 발사 시작할 때의 속도")] + [SerializeField] private float initialVelocity; + + [Tooltip("화살이 타겟에 도달하는 오차 범위(부정확함)")] + [Range(0f, 1f)] + [SerializeField] private float inaccuracy; + + [Tooltip("발사 이후 자동으로 사라지는데 까지 걸리는 시간")] + [Range(0f, 10f)] + [SerializeField] private float autoDestroyTime; + + private Vector3 targetPos; + private AiStat attackerStat; + private LayerMask targetLayer; + private IObjectPool managedArrowPool; + private Rigidbody arrowRigidbody; + + #endregion + + #region Unity built-in function + + private void Awake() + { + arrowRigidbody = Utils.GetComponentAndAssert(transform); + } + + private void OnTriggerEnter(Collider other) + { + if (other.gameObject.layer != targetLayer) return; + + var iDamageable = other.GetComponent(); + + iDamageable.TakeDamage(attackerStat, iDamageable.AiStat); + } + + #endregion + + #region Custom function + + public IEnumerator Shoot() + { + // TODO : 화살 발사 기능 구현 + var time = 0f; + + while (time < autoDestroyTime) + { + time += Time.deltaTime; + + var toTarget = targetPos - transform.position; + var angle = CalcLaunchAngle(toTarget); + + angle += Random.Range(-inaccuracy, inaccuracy); + + var velocity = Quaternion.Euler(0, 0, angle) * Vector3.right * initialVelocity; + + arrowRigidbody.velocity = velocity; + + yield return null; + } + + DestroyObject(); + } + + private float CalcLaunchAngle(Vector3 toTarget) + { + var distance = Vector3.Distance(toTarget, Vector3.zero); + var heightDifference = toTarget.y; + + var gravity = Physics.gravity.magnitude; + var velocitySqr = initialVelocity * initialVelocity; + var underSqrt = (velocitySqr * velocitySqr) - (gravity * ((gravity * distance * distance) + (2 * heightDifference * velocitySqr))); + + if (underSqrt >= 0) + { + var angle1 = Mathf.Atan((velocitySqr + Mathf.Sqrt(underSqrt)) / (gravity * distance)); + var angle2 = Mathf.Atan((velocitySqr - Mathf.Sqrt(underSqrt)) / (gravity * distance)); + + return Mathf.Min(angle1, angle2) * Mathf.Rad2Deg; + } + else + { + return 45f; + } + } + + public void SetShootingArrow(Vector3 targetPosition, AiStat attacker, int targetLayerMask) + { + targetPos = targetPosition; + attackerStat = attacker; + targetLayer = targetLayerMask; + } + //public void SetAiStat(AiStat attacker) => attackerStat = attacker; + //public void SetTargetLayer(int targetLayerMask) => targetLayer = targetLayerMask; + + #endregion + + + #region ObjectPool function + + private void DestroyObject() => managedArrowPool.Release(this); + + public void SetManagedPool(IObjectPool pool) => managedArrowPool = pool; + + #endregion + } +} \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Arrow.cs.meta b/BlueWater/Assets/02.Scripts/Arrow.cs.meta new file mode 100644 index 000000000..11e0ad829 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Arrow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b92a5d3b88920fb49a3f6cbb978d4256 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/05.Prefabs/Arrow_01.prefab b/BlueWater/Assets/05.Prefabs/Arrow_01.prefab index 5ecdb7776..14441f0bf 100644 --- a/BlueWater/Assets/05.Prefabs/Arrow_01.prefab +++ b/BlueWater/Assets/05.Prefabs/Arrow_01.prefab @@ -13,6 +13,7 @@ GameObject: - component: {fileID: 1785029973891203311} - component: {fileID: 353518751665641904} - component: {fileID: 946815694508473086} + - component: {fileID: -5311732570981789242} m_Layer: 11 m_Name: Arrow_01 m_TagString: Untagged @@ -133,3 +134,18 @@ BoxCollider: serializedVersion: 3 m_Size: {x: 2.5193424, y: 0.1075005, z: 0.19868845} m_Center: {x: -0.4827804, y: 0, z: -0.00000009685755} +--- !u!114 &-5311732570981789242 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3190292116200820221} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b92a5d3b88920fb49a3f6cbb978d4256, type: 3} + m_Name: + m_EditorClassIdentifier: + initialVelocity: 10 + inaccuracy: 0.2 + autoDestroyTime: 5 diff --git a/BlueWater/Assets/05.Prefabs/Character/Enemy/Archer_E.prefab b/BlueWater/Assets/05.Prefabs/Character/Enemy/Archer_E.prefab index 18d287118..30c452701 100644 --- a/BlueWater/Assets/05.Prefabs/Character/Enemy/Archer_E.prefab +++ b/BlueWater/Assets/05.Prefabs/Character/Enemy/Archer_E.prefab @@ -8842,6 +8842,7 @@ GameObject: - component: {fileID: 5573013734212559145} - component: {fileID: 7168357575438651213} - component: {fileID: 7791165217067826530} + - component: {fileID: -9215612320947280157} - component: {fileID: 7907774551260894579} m_Layer: 10 m_Name: Archer_E @@ -9013,14 +9014,54 @@ CapsuleCollider: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 - m_IsTrigger: 0 + m_IsTrigger: 1 m_ProvidesContacts: 0 - m_Enabled: 0 + m_Enabled: 1 serializedVersion: 2 m_Radius: 0.3 m_Height: 1.6 m_Direction: 1 m_Center: {x: 0, y: 0.8, z: 0} +--- !u!114 &-9215612320947280157 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b788620b2cca0844a3b03748ada3423, type: 3} + m_Name: + m_EditorClassIdentifier: + drawGizmo: 1 + targetLayer: + serializedVersion: 2 + m_Bits: 768 + viewAngle: 360 + viewRadius: 50 + colliderWithinRange: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + targetTransform: {fileID: 0} --- !u!114 &7907774551260894579 MonoBehaviour: m_ObjectHideFlags: 0 @@ -9044,6 +9085,10 @@ MonoBehaviour: shieldPenetrationRate: 25 penetrationResistivity: 0 avoidanceRate: 20 + arrowPrefab: {fileID: 3190292116200820221, guid: 09f461c60481dea4b975222675a2682f, + type: 3} + arrowMaxSize: 100 + shootArrowTime: 0.2 --- !u!1 &156456 GameObject: m_ObjectHideFlags: 0 diff --git a/BlueWater/Assets/05.Prefabs/Character/Enemy/SpearKight_E.prefab b/BlueWater/Assets/05.Prefabs/Character/Enemy/SpearKight_E.prefab index ee780938c..2ce5b3105 100644 --- a/BlueWater/Assets/05.Prefabs/Character/Enemy/SpearKight_E.prefab +++ b/BlueWater/Assets/05.Prefabs/Character/Enemy/SpearKight_E.prefab @@ -8842,6 +8842,7 @@ GameObject: - component: {fileID: 1585740381921473437} - component: {fileID: 6873184234425177088} - component: {fileID: 3683547817894632574} + - component: {fileID: -3917505405678989428} - component: {fileID: 7182214291447694529} m_Layer: 10 m_Name: SpearKight_E @@ -9013,14 +9014,54 @@ CapsuleCollider: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 - m_IsTrigger: 0 + m_IsTrigger: 1 m_ProvidesContacts: 0 - m_Enabled: 0 + m_Enabled: 1 serializedVersion: 2 m_Radius: 0.3 m_Height: 1.6 m_Direction: 1 m_Center: {x: 0, y: 0.8, z: 0} +--- !u!114 &-3917505405678989428 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b788620b2cca0844a3b03748ada3423, type: 3} + m_Name: + m_EditorClassIdentifier: + drawGizmo: 1 + targetLayer: + serializedVersion: 2 + m_Bits: 768 + viewAngle: 360 + viewRadius: 50 + colliderWithinRange: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + targetTransform: {fileID: 0} --- !u!114 &7182214291447694529 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/BlueWater/Assets/05.Prefabs/Character/Enemy/Spearman_E.prefab b/BlueWater/Assets/05.Prefabs/Character/Enemy/Spearman_E.prefab index c60d5214f..9fce20069 100644 --- a/BlueWater/Assets/05.Prefabs/Character/Enemy/Spearman_E.prefab +++ b/BlueWater/Assets/05.Prefabs/Character/Enemy/Spearman_E.prefab @@ -8842,6 +8842,7 @@ GameObject: - component: {fileID: -5432587835745218081} - component: {fileID: 3624658373763787491} - component: {fileID: 4122610663137176938} + - component: {fileID: -8280972574167639194} - component: {fileID: 7704073908654393070} m_Layer: 10 m_Name: Spearman_E @@ -9013,14 +9014,54 @@ CapsuleCollider: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 - m_IsTrigger: 0 + m_IsTrigger: 1 m_ProvidesContacts: 0 - m_Enabled: 0 + m_Enabled: 1 serializedVersion: 2 m_Radius: 0.3 m_Height: 1.6 m_Direction: 1 m_Center: {x: 0, y: 0.8, z: 0} +--- !u!114 &-8280972574167639194 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b788620b2cca0844a3b03748ada3423, type: 3} + m_Name: + m_EditorClassIdentifier: + drawGizmo: 1 + targetLayer: + serializedVersion: 2 + m_Bits: 768 + viewAngle: 360 + viewRadius: 50 + colliderWithinRange: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + targetTransform: {fileID: 0} --- !u!114 &7704073908654393070 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/BlueWater/Assets/05.Prefabs/Character/Enemy/SwordKnight_E.prefab b/BlueWater/Assets/05.Prefabs/Character/Enemy/SwordKnight_E.prefab index df5bbc1d6..b697c7fba 100644 --- a/BlueWater/Assets/05.Prefabs/Character/Enemy/SwordKnight_E.prefab +++ b/BlueWater/Assets/05.Prefabs/Character/Enemy/SwordKnight_E.prefab @@ -8842,6 +8842,7 @@ GameObject: - component: {fileID: -6969909005288574405} - component: {fileID: 1866651242933062860} - component: {fileID: 1995768815968683845} + - component: {fileID: 8188970957291078347} - component: {fileID: 6047348452593534959} m_Layer: 10 m_Name: SwordKnight_E @@ -9013,14 +9014,54 @@ CapsuleCollider: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 - m_IsTrigger: 0 + m_IsTrigger: 1 m_ProvidesContacts: 0 - m_Enabled: 0 + m_Enabled: 1 serializedVersion: 2 m_Radius: 0.3 m_Height: 1.6 m_Direction: 1 m_Center: {x: 0, y: 0.8, z: 0} +--- !u!114 &8188970957291078347 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b788620b2cca0844a3b03748ada3423, type: 3} + m_Name: + m_EditorClassIdentifier: + drawGizmo: 1 + targetLayer: + serializedVersion: 2 + m_Bits: 768 + viewAngle: 360 + viewRadius: 50 + colliderWithinRange: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + targetTransform: {fileID: 0} --- !u!114 &6047348452593534959 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/BlueWater/Assets/05.Prefabs/Character/Enemy/Swordman_E.prefab b/BlueWater/Assets/05.Prefabs/Character/Enemy/Swordman_E.prefab index 10662568d..8690d1d88 100644 --- a/BlueWater/Assets/05.Prefabs/Character/Enemy/Swordman_E.prefab +++ b/BlueWater/Assets/05.Prefabs/Character/Enemy/Swordman_E.prefab @@ -8842,6 +8842,7 @@ GameObject: - component: {fileID: 2465164759345150209} - component: {fileID: 5315314452492636260} - component: {fileID: 4374537182398505653} + - component: {fileID: -240874973628863183} - component: {fileID: 1001412064052513076} m_Layer: 10 m_Name: Swordman_E @@ -9013,14 +9014,54 @@ CapsuleCollider: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 - m_IsTrigger: 0 + m_IsTrigger: 1 m_ProvidesContacts: 0 - m_Enabled: 0 + m_Enabled: 1 serializedVersion: 2 m_Radius: 0.3 m_Height: 1.6 m_Direction: 1 m_Center: {x: 0, y: 0.8, z: 0} +--- !u!114 &-240874973628863183 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b788620b2cca0844a3b03748ada3423, type: 3} + m_Name: + m_EditorClassIdentifier: + drawGizmo: 1 + targetLayer: + serializedVersion: 2 + m_Bits: 768 + viewAngle: 360 + viewRadius: 50 + colliderWithinRange: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + targetTransform: {fileID: 0} --- !u!114 &1001412064052513076 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/BlueWater/Assets/05.Prefabs/Character/Pirate/Archer_P.prefab b/BlueWater/Assets/05.Prefabs/Character/Pirate/Archer_P.prefab index 8bcb1a545..924b8d0c5 100644 --- a/BlueWater/Assets/05.Prefabs/Character/Pirate/Archer_P.prefab +++ b/BlueWater/Assets/05.Prefabs/Character/Pirate/Archer_P.prefab @@ -8842,6 +8842,7 @@ GameObject: - component: {fileID: -1452054039192376132} - component: {fileID: 7512442584761959655} - component: {fileID: 1485348745952943168} + - component: {fileID: 7637477476578413928} - component: {fileID: 5368244484501432161} m_Layer: 9 m_Name: Archer_P @@ -9013,14 +9014,54 @@ CapsuleCollider: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 - m_IsTrigger: 0 + m_IsTrigger: 1 m_ProvidesContacts: 0 - m_Enabled: 0 + m_Enabled: 1 serializedVersion: 2 m_Radius: 0.3 m_Height: 1.6 m_Direction: 1 m_Center: {x: 0, y: 0.8, z: 0} +--- !u!114 &7637477476578413928 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b788620b2cca0844a3b03748ada3423, type: 3} + m_Name: + m_EditorClassIdentifier: + drawGizmo: 1 + targetLayer: + serializedVersion: 2 + m_Bits: 1024 + viewAngle: 360 + viewRadius: 50 + colliderWithinRange: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + targetTransform: {fileID: 0} --- !u!114 &5368244484501432161 MonoBehaviour: m_ObjectHideFlags: 0 @@ -9044,6 +9085,10 @@ MonoBehaviour: shieldPenetrationRate: 25 penetrationResistivity: 0 avoidanceRate: 20 + arrowPrefab: {fileID: 3190292116200820221, guid: 09f461c60481dea4b975222675a2682f, + type: 3} + arrowMaxSize: 100 + shootArrowTime: 0.2 --- !u!1 &156456 GameObject: m_ObjectHideFlags: 0 diff --git a/BlueWater/Assets/05.Prefabs/Character/Pirate/Axeman_P.prefab b/BlueWater/Assets/05.Prefabs/Character/Pirate/Axeman_P.prefab index def31d2ec..467309f3b 100644 --- a/BlueWater/Assets/05.Prefabs/Character/Pirate/Axeman_P.prefab +++ b/BlueWater/Assets/05.Prefabs/Character/Pirate/Axeman_P.prefab @@ -8842,6 +8842,7 @@ GameObject: - component: {fileID: 5092290984078098781} - component: {fileID: 2614437605201190422} - component: {fileID: 2219967035923003510} + - component: {fileID: 1879530881354914857} - component: {fileID: 6907943215527842660} m_Layer: 9 m_Name: Axeman_P @@ -9013,14 +9014,54 @@ CapsuleCollider: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 - m_IsTrigger: 0 + m_IsTrigger: 1 m_ProvidesContacts: 0 - m_Enabled: 0 + m_Enabled: 1 serializedVersion: 2 m_Radius: 0.3 m_Height: 1.6 m_Direction: 1 m_Center: {x: 0, y: 0.8, z: 0} +--- !u!114 &1879530881354914857 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b788620b2cca0844a3b03748ada3423, type: 3} + m_Name: + m_EditorClassIdentifier: + drawGizmo: 1 + targetLayer: + serializedVersion: 2 + m_Bits: 1024 + viewAngle: 360 + viewRadius: 50 + colliderWithinRange: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + targetTransform: {fileID: 0} --- !u!114 &6907943215527842660 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/BlueWater/Assets/05.Prefabs/Character/Pirate/Spearman_P.prefab b/BlueWater/Assets/05.Prefabs/Character/Pirate/Spearman_P.prefab index abe9bfa9c..6cd0190c9 100644 --- a/BlueWater/Assets/05.Prefabs/Character/Pirate/Spearman_P.prefab +++ b/BlueWater/Assets/05.Prefabs/Character/Pirate/Spearman_P.prefab @@ -8842,6 +8842,7 @@ GameObject: - component: {fileID: 3215129809532427712} - component: {fileID: 8718300241156730733} - component: {fileID: 13124744015303705} + - component: {fileID: -836644672241485533} - component: {fileID: 5358608732463309424} m_Layer: 9 m_Name: Spearman_P @@ -9013,14 +9014,54 @@ CapsuleCollider: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 - m_IsTrigger: 0 + m_IsTrigger: 1 m_ProvidesContacts: 0 - m_Enabled: 0 + m_Enabled: 1 serializedVersion: 2 m_Radius: 0.3 m_Height: 1.6 m_Direction: 1 m_Center: {x: 0, y: 0.8, z: 0} +--- !u!114 &-836644672241485533 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b788620b2cca0844a3b03748ada3423, type: 3} + m_Name: + m_EditorClassIdentifier: + drawGizmo: 1 + targetLayer: + serializedVersion: 2 + m_Bits: 1024 + viewAngle: 360 + viewRadius: 50 + colliderWithinRange: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + targetTransform: {fileID: 0} --- !u!114 &5358608732463309424 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/BlueWater/Assets/05.Prefabs/Character/Pirate/SwordKnight_P.prefab b/BlueWater/Assets/05.Prefabs/Character/Pirate/SwordKnight_P.prefab index 5f8eb67da..090997c17 100644 --- a/BlueWater/Assets/05.Prefabs/Character/Pirate/SwordKnight_P.prefab +++ b/BlueWater/Assets/05.Prefabs/Character/Pirate/SwordKnight_P.prefab @@ -8842,6 +8842,7 @@ GameObject: - component: {fileID: 5757796364526883762} - component: {fileID: 4974866494169781262} - component: {fileID: 9121247047284190495} + - component: {fileID: -8553620294219021237} - component: {fileID: 577732947051587098} m_Layer: 9 m_Name: SwordKnight_P @@ -9013,14 +9014,54 @@ CapsuleCollider: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 - m_IsTrigger: 0 + m_IsTrigger: 1 m_ProvidesContacts: 0 - m_Enabled: 0 + m_Enabled: 1 serializedVersion: 2 m_Radius: 0.3 m_Height: 1.6 m_Direction: 1 m_Center: {x: 0, y: 0.8, z: 0} +--- !u!114 &-8553620294219021237 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b788620b2cca0844a3b03748ada3423, type: 3} + m_Name: + m_EditorClassIdentifier: + drawGizmo: 1 + targetLayer: + serializedVersion: 2 + m_Bits: 1024 + viewAngle: 360 + viewRadius: 50 + colliderWithinRange: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + targetTransform: {fileID: 0} --- !u!114 &577732947051587098 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/BlueWater/Assets/05.Prefabs/Character/Pirate/Swordman_P.prefab b/BlueWater/Assets/05.Prefabs/Character/Pirate/Swordman_P.prefab index 8dc0d3eac..a67b2f545 100644 --- a/BlueWater/Assets/05.Prefabs/Character/Pirate/Swordman_P.prefab +++ b/BlueWater/Assets/05.Prefabs/Character/Pirate/Swordman_P.prefab @@ -8842,6 +8842,7 @@ GameObject: - component: {fileID: -7252639514611643757} - component: {fileID: 4344432134670323988} - component: {fileID: 6882424985411624636} + - component: {fileID: -1501104226175991063} - component: {fileID: 1136834195750313725} m_Layer: 9 m_Name: Swordman_P @@ -9013,14 +9014,54 @@ CapsuleCollider: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 - m_IsTrigger: 0 + m_IsTrigger: 1 m_ProvidesContacts: 0 - m_Enabled: 0 + m_Enabled: 1 serializedVersion: 2 m_Radius: 0.3 m_Height: 1.6 m_Direction: 1 m_Center: {x: 0, y: 0.8, z: 0} +--- !u!114 &-1501104226175991063 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 155132} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b788620b2cca0844a3b03748ada3423, type: 3} + m_Name: + m_EditorClassIdentifier: + drawGizmo: 1 + targetLayer: + serializedVersion: 2 + m_Bits: 1024 + viewAngle: 360 + viewRadius: 50 + colliderWithinRange: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + targetTransform: {fileID: 0} --- !u!114 &1136834195750313725 MonoBehaviour: m_ObjectHideFlags: 0