#7 Add FieldOfView script in aiPrefab

Additional commit content
- Add arrow prefab, script, objectPool system
- fixed 02.Main_TG Scene
- testing fieldOfView
This commit is contained in:
NTG_Lenovo 2023-08-03 17:00:14 +09:00
parent f1c4bdc95b
commit 8bd4a3f3ca
18 changed files with 931 additions and 31 deletions

View File

@ -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}

View File

@ -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<Animator>(transform);
fieldOfView = Utils.GetComponentAndAssert<FieldOfView>(transform);
}
private void Start()
@ -75,7 +78,7 @@ namespace BlueWaterProject
#endregion
#region Function
#region Custom function
public void SetCurrentHp(float value) => AiStat.currentHp = value;

View File

@ -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
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0b788620b2cca0844a3b03748ada3423
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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<Arrow> arrowPool;
#endregion
#region Unity Built-in Function
protected override void Awake()
{
StartCoroutine(ShootArrow());
base.Awake();
arrowsLocation = GameObject.Find("ObjectPoolManager/Arrows").transform;
arrowPool = new ObjectPool<Arrow>(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>();
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
}
}

View File

@ -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<Arrow> managedArrowPool;
private Rigidbody arrowRigidbody;
#endregion
#region Unity built-in function
private void Awake()
{
arrowRigidbody = Utils.GetComponentAndAssert<Rigidbody>(transform);
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.layer != targetLayer) return;
var iDamageable = other.GetComponent<IDamageable>();
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<Arrow> pool) => managedArrowPool = pool;
#endregion
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b92a5d3b88920fb49a3f6cbb978d4256
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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