parent
42f15c5a6e
commit
fb7893d0f5
@ -4,6 +4,7 @@ using System.Collections.Generic;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI;
|
||||
using UnityEngine.Serialization;
|
||||
using Random = UnityEngine.Random;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
@ -18,27 +19,37 @@ namespace BlueWaterProject
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public abstract class AiController : MonoBehaviour, IDamageable, IFieldOfView
|
||||
public abstract class AiController : MonoBehaviour, IDamageable, IFieldOfView, IAiMover
|
||||
{
|
||||
#region Property and variable
|
||||
|
||||
[Title("Skin")]
|
||||
[Tooltip("SkinnedMeshRenderer, MeshRenderer의 Material을 모두 담고 있는 리스트")]
|
||||
[SerializeField] protected List<Material> skinMaterialList = new(10);
|
||||
|
||||
[Tooltip("캐릭터 외곽선의 기본 색상")]
|
||||
[SerializeField] protected Color defaultSkinColor = Color.black;
|
||||
|
||||
[Tooltip("캐릭터에 마우스 커서가 올라가 있을 때 색상")]
|
||||
[SerializeField] protected Color mouseEnterHighlightSkinColor = Color.white;
|
||||
|
||||
[Tooltip("캐릭터가 선택되었을 때 색상")]
|
||||
[SerializeField] protected Color selectedSkinColor = Color.blue;
|
||||
|
||||
protected bool isAttacking;
|
||||
protected AttackerType attackerType;
|
||||
|
||||
[SerializeField] protected List<Material> skinMaterial = new(10);
|
||||
protected Animator aiAnimator;
|
||||
protected AiMover aiMover;
|
||||
protected NavMeshAgent navMeshAgent;
|
||||
|
||||
private UnitController mouseEnterUnitController;
|
||||
private UnitSelection unitSelection;
|
||||
|
||||
public static readonly int SpeedHash = Animator.StringToHash("Speed");
|
||||
public static readonly int AttackHash = Animator.StringToHash("Attack");
|
||||
public static readonly int DamageHash = Animator.StringToHash("TakeDamage");
|
||||
public static readonly int DeathTypeHash = Animator.StringToHash("DeathType");
|
||||
public static readonly int DeathHash = Animator.StringToHash("Death");
|
||||
public static readonly int OutlineColorHash = Shader.PropertyToID("_OutlineColor");
|
||||
private static readonly int SpeedHash = Animator.StringToHash("Speed");
|
||||
protected static readonly int AttackHash = Animator.StringToHash("Attack");
|
||||
private static readonly int DamageHash = Animator.StringToHash("TakeDamage");
|
||||
private static readonly int DeathTypeHash = Animator.StringToHash("DeathType");
|
||||
private static readonly int DeathHash = Animator.StringToHash("Death");
|
||||
private static readonly int OutlineColorHash = Shader.PropertyToID("_OutlineColor");
|
||||
|
||||
private static readonly WaitForSeconds FindTargetWaitTime = new(0.5f);
|
||||
|
||||
@ -61,7 +72,6 @@ namespace BlueWaterProject
|
||||
{
|
||||
FindMaterial();
|
||||
aiAnimator = Utils.GetComponentAndAssert<Animator>(transform);
|
||||
aiMover = Utils.GetComponentAndAssert<AiMover>(transform);
|
||||
navMeshAgent = Utils.GetComponentAndAssert<NavMeshAgent>(transform);
|
||||
|
||||
unitSelection = FindObjectOfType<UnitSelection>();
|
||||
@ -92,6 +102,7 @@ namespace BlueWaterProject
|
||||
private void FixedUpdate()
|
||||
{
|
||||
UpdateLookAtTarget();
|
||||
UpdateMovement();
|
||||
}
|
||||
|
||||
private void OnMouseEnter()
|
||||
@ -293,9 +304,42 @@ namespace BlueWaterProject
|
||||
|
||||
#endregion
|
||||
|
||||
#region IAiMover
|
||||
|
||||
[field: Space(10f)]
|
||||
[field: Title("Mover")]
|
||||
[field: SerializeField] public MoveType MoveType { get; set; }
|
||||
|
||||
[field: SerializeField] public bool IsCommanded { get; set; }
|
||||
|
||||
public void UpdateMovement()
|
||||
{
|
||||
aiAnimator.SetFloat(AiController.SpeedHash, navMeshAgent.velocity.normalized.magnitude);
|
||||
|
||||
if (IsCommanded || isAttacking)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!TargetInfo.transform || MoveType is MoveType.NONE or MoveType.FIXED) return;
|
||||
|
||||
navMeshAgent.SetDestination(TargetInfo.transform.position);
|
||||
}
|
||||
}
|
||||
|
||||
public void MoveTarget(Vector3 targetPos)
|
||||
{
|
||||
IsCommanded = true;
|
||||
navMeshAgent.SetDestination(targetPos);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
#region Custom function
|
||||
|
||||
private void FindMaterial()
|
||||
{
|
||||
var skinnedMeshRenderers = GetComponentsInChildren<SkinnedMeshRenderer>();
|
||||
@ -305,40 +349,28 @@ namespace BlueWaterProject
|
||||
{
|
||||
if (!skin.gameObject.activeSelf) continue;
|
||||
|
||||
skinMaterial.Add(skin.material);
|
||||
skinMaterialList.Add(skin.material);
|
||||
}
|
||||
|
||||
foreach (var skin in meshRenderers)
|
||||
{
|
||||
if (!skin.gameObject.activeSelf) continue;
|
||||
|
||||
skinMaterial.Add(skin.material);
|
||||
skinMaterialList.Add(skin.material);
|
||||
}
|
||||
}
|
||||
|
||||
public void ResetHighlight()
|
||||
private void SetOutlineColor(Color color)
|
||||
{
|
||||
foreach (var skin in skinMaterial)
|
||||
foreach (var skin in skinMaterialList)
|
||||
{
|
||||
skin.SetColor(OutlineColorHash, Color.black);
|
||||
skin.SetColor(OutlineColorHash, color);
|
||||
}
|
||||
}
|
||||
public void MouseEnterHighlight()
|
||||
{
|
||||
foreach (var skin in skinMaterial)
|
||||
{
|
||||
skin.SetColor(OutlineColorHash, Color.white);
|
||||
}
|
||||
}
|
||||
|
||||
public void SelectedHighlight()
|
||||
{
|
||||
foreach (var skin in skinMaterial)
|
||||
{
|
||||
skin.SetColor(OutlineColorHash, Color.blue);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void ResetHighlight() => SetOutlineColor(Color.black);
|
||||
public void MouseEnterHighlight() => SetOutlineColor(Color.white);
|
||||
public void SelectedHighlight() => SetOutlineColor(Color.blue);
|
||||
private void DestroyObject() => Destroy(gameObject);
|
||||
public bool GetIsAttacking() => isAttacking;
|
||||
public NavMeshAgent GetNavMeshAgent() => navMeshAgent;
|
||||
|
@ -1,67 +0,0 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public class AiMover : MonoBehaviour
|
||||
{
|
||||
private enum MoveType
|
||||
{
|
||||
NONE, // 미설정
|
||||
FIXED, // 자리를 지키는 AI
|
||||
MOVE // 자리를 움직이는 AI
|
||||
}
|
||||
|
||||
#region Property and variable
|
||||
|
||||
|
||||
[SerializeField] private MoveType moveType;
|
||||
|
||||
private bool isCommanded;
|
||||
private Vector3 movePos;
|
||||
|
||||
private AiController aiController;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Unity built-in function
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
aiController = Utils.GetComponentAndAssert<AiController>(transform);
|
||||
}
|
||||
|
||||
private void LateUpdate()
|
||||
{
|
||||
aiController.GetAnimator().SetFloat(AiController.SpeedHash, aiController.GetNavMeshAgent().velocity.normalized.magnitude);
|
||||
|
||||
if (isCommanded || aiController.GetIsAttacking())
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!GetTargetInfo().transform || moveType is MoveType.NONE or MoveType.FIXED) return;
|
||||
|
||||
GetNavMeshAgent().SetDestination(GetTargetInfo().transform.position);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Custom function
|
||||
|
||||
public void MoveTarget(Vector3 targetPos)
|
||||
{
|
||||
isCommanded = true;
|
||||
GetNavMeshAgent().SetDestination(targetPos);
|
||||
}
|
||||
public bool GetIsCommanded() => isCommanded;
|
||||
private TargetInfo GetTargetInfo() => aiController.TargetInfo;
|
||||
private NavMeshAgent GetNavMeshAgent() => aiController.GetNavMeshAgent();
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -1,158 +0,0 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[Serializable]
|
||||
public class TargetInfo
|
||||
{
|
||||
public Transform transform;
|
||||
public Collider collider;
|
||||
public IAiStat iAiStat;
|
||||
|
||||
public TargetInfo()
|
||||
{
|
||||
transform = null;
|
||||
collider = null;
|
||||
iAiStat = null;
|
||||
}
|
||||
|
||||
public TargetInfo(Transform transform, Collider collider, IAiStat iAiStat)
|
||||
{
|
||||
this.transform = transform;
|
||||
this.collider = collider;
|
||||
this.iAiStat = iAiStat;
|
||||
}
|
||||
|
||||
public void SetTargetInfo(Transform targetTransform, Collider collider, IAiStat targetIAiStat)
|
||||
{
|
||||
transform = targetTransform;
|
||||
this.collider = collider;
|
||||
iAiStat = targetIAiStat;
|
||||
}
|
||||
|
||||
public void DefaultSetting()
|
||||
{
|
||||
transform = null;
|
||||
collider = null;
|
||||
iAiStat = null;
|
||||
}
|
||||
}
|
||||
|
||||
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 TargetInfo targetInfo = new();
|
||||
|
||||
private Collider targetCollider;
|
||||
private IAiStat iAiStat;
|
||||
|
||||
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 (targetInfo.transform == null) return;
|
||||
|
||||
Debug.DrawLine(myPos, targetInfo.transform.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)
|
||||
{
|
||||
targetInfo.DefaultSetting();
|
||||
return;
|
||||
}
|
||||
|
||||
iAiStat = colliderWithinRange[0].GetComponent<IAiStat>();
|
||||
|
||||
float nearestDistance;
|
||||
Transform nearestTargetTransform;
|
||||
|
||||
if (iAiStat.GetCurrentHp() <= 0)
|
||||
{
|
||||
nearestDistance = float.PositiveInfinity;
|
||||
nearestTargetTransform = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
nearestDistance = Vector3.Distance(colliderWithinRange[0].transform.position, myPos);
|
||||
nearestTargetTransform = colliderWithinRange[0].transform;
|
||||
}
|
||||
|
||||
for (var i = 1; i < maxColliderCount; i++)
|
||||
{
|
||||
var distance = Vector3.Distance(colliderWithinRange[i].transform.position, myPos);
|
||||
|
||||
if (nearestDistance < distance) continue;
|
||||
|
||||
iAiStat = colliderWithinRange[i].GetComponent<IAiStat>();
|
||||
|
||||
if (iAiStat.GetCurrentHp() <= 0) continue;
|
||||
|
||||
nearestDistance = distance;
|
||||
nearestTargetTransform = colliderWithinRange[i].transform;
|
||||
}
|
||||
|
||||
if (nearestTargetTransform)
|
||||
{
|
||||
targetCollider = nearestTargetTransform.GetComponent<Collider>();
|
||||
iAiStat = nearestTargetTransform.GetComponent<IAiStat>();
|
||||
targetInfo.SetTargetInfo(nearestTargetTransform, targetCollider, iAiStat);
|
||||
|
||||
var targetPos = targetInfo.transform.position;
|
||||
targetPos.y = transform.position.y;
|
||||
transform.LookAt(targetPos);
|
||||
}
|
||||
else
|
||||
{
|
||||
targetInfo.DefaultSetting();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Custom Function
|
||||
|
||||
public int GetTargetLayer() => targetLayer;
|
||||
public TargetInfo GetTargetInfo() => targetInfo;
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0b788620b2cca0844a3b03748ada3423
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
25
BlueWater/Assets/02.Scripts/Interface/IAiMover.cs
Normal file
25
BlueWater/Assets/02.Scripts/Interface/IAiMover.cs
Normal file
@ -0,0 +1,25 @@
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public enum MoveType
|
||||
{
|
||||
NONE, // 미설정
|
||||
FIXED, // 자리를 지키는 AI
|
||||
MOVE // 자리를 움직이는 AI
|
||||
}
|
||||
|
||||
public interface IAiMover : IAiBase
|
||||
{
|
||||
// Properties
|
||||
MoveType MoveType { get; set; }
|
||||
|
||||
bool IsCommanded { get; set; }
|
||||
|
||||
// Functions
|
||||
void UpdateMovement();
|
||||
|
||||
void MoveTarget(Vector3 targetPos);
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b3815b2d4a7cc254e8141b8720fe6738
|
||||
guid: 9b65a318a1f8f084696c3b965c723a3c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
@ -1,3 +1,4 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
@ -5,6 +6,42 @@ using UnityEngine;
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[Serializable]
|
||||
public class TargetInfo
|
||||
{
|
||||
public Transform transform;
|
||||
public Collider collider;
|
||||
public IAiStat iAiStat;
|
||||
|
||||
public TargetInfo()
|
||||
{
|
||||
transform = null;
|
||||
collider = null;
|
||||
iAiStat = null;
|
||||
}
|
||||
|
||||
public TargetInfo(Transform transform, Collider collider, IAiStat iAiStat)
|
||||
{
|
||||
this.transform = transform;
|
||||
this.collider = collider;
|
||||
this.iAiStat = iAiStat;
|
||||
}
|
||||
|
||||
public void SetTargetInfo(Transform targetTransform, Collider collider, IAiStat targetIAiStat)
|
||||
{
|
||||
transform = targetTransform;
|
||||
this.collider = collider;
|
||||
iAiStat = targetIAiStat;
|
||||
}
|
||||
|
||||
public void DefaultSetting()
|
||||
{
|
||||
transform = null;
|
||||
collider = null;
|
||||
iAiStat = null;
|
||||
}
|
||||
}
|
||||
|
||||
public interface IFieldOfView : IAiStat
|
||||
{
|
||||
// Properties
|
||||
|
@ -8842,7 +8842,6 @@ GameObject:
|
||||
- component: {fileID: 5573013734212559145}
|
||||
- component: {fileID: 7168357575438651213}
|
||||
- component: {fileID: 7791165217067826530}
|
||||
- component: {fileID: 7718871607120422351}
|
||||
- component: {fileID: 7907774551260894579}
|
||||
m_Layer: 10
|
||||
m_Name: Archer_E
|
||||
@ -9022,19 +9021,6 @@ CapsuleCollider:
|
||||
m_Height: 1.6
|
||||
m_Direction: 1
|
||||
m_Center: {x: 0, y: 0.8, z: 0}
|
||||
--- !u!114 &7718871607120422351
|
||||
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: b3815b2d4a7cc254e8141b8720fe6738, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
moveType: 1
|
||||
--- !u!114 &7907774551260894579
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -9100,6 +9086,8 @@ MonoBehaviour:
|
||||
<TargetInfo>k__BackingField:
|
||||
transform: {fileID: 0}
|
||||
collider: {fileID: 0}
|
||||
<MoveType>k__BackingField: 1
|
||||
<IsCommanded>k__BackingField: 0
|
||||
arrowPrefab: {fileID: 3190292116200820221, guid: 09f461c60481dea4b975222675a2682f,
|
||||
type: 3}
|
||||
arrowMaxSize: 100
|
||||
|
@ -8842,7 +8842,6 @@ GameObject:
|
||||
- component: {fileID: 1585740381921473437}
|
||||
- component: {fileID: 6873184234425177088}
|
||||
- component: {fileID: 3683547817894632574}
|
||||
- component: {fileID: -1311775106345794486}
|
||||
- component: {fileID: 7182214291447694529}
|
||||
m_Layer: 10
|
||||
m_Name: SpearKnight_E
|
||||
@ -9022,19 +9021,6 @@ CapsuleCollider:
|
||||
m_Height: 1.6
|
||||
m_Direction: 1
|
||||
m_Center: {x: 0, y: 0.8, z: 0}
|
||||
--- !u!114 &-1311775106345794486
|
||||
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: b3815b2d4a7cc254e8141b8720fe6738, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
moveType: 2
|
||||
--- !u!114 &7182214291447694529
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -9100,6 +9086,8 @@ MonoBehaviour:
|
||||
<TargetInfo>k__BackingField:
|
||||
transform: {fileID: 0}
|
||||
collider: {fileID: 0}
|
||||
<MoveType>k__BackingField: 2
|
||||
<IsCommanded>k__BackingField: 0
|
||||
--- !u!1 &156456
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -8842,7 +8842,6 @@ GameObject:
|
||||
- component: {fileID: -5432587835745218081}
|
||||
- component: {fileID: 3624658373763787491}
|
||||
- component: {fileID: 4122610663137176938}
|
||||
- component: {fileID: -9119350118846133839}
|
||||
- component: {fileID: 7704073908654393070}
|
||||
m_Layer: 10
|
||||
m_Name: Spearman_E
|
||||
@ -9022,19 +9021,6 @@ CapsuleCollider:
|
||||
m_Height: 1.6
|
||||
m_Direction: 1
|
||||
m_Center: {x: 0, y: 0.8, z: 0}
|
||||
--- !u!114 &-9119350118846133839
|
||||
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: b3815b2d4a7cc254e8141b8720fe6738, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
moveType: 2
|
||||
--- !u!114 &7704073908654393070
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -9100,6 +9086,8 @@ MonoBehaviour:
|
||||
<TargetInfo>k__BackingField:
|
||||
transform: {fileID: 0}
|
||||
collider: {fileID: 0}
|
||||
<MoveType>k__BackingField: 2
|
||||
<IsCommanded>k__BackingField: 0
|
||||
--- !u!1 &156456
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -8842,7 +8842,6 @@ GameObject:
|
||||
- component: {fileID: -6969909005288574405}
|
||||
- component: {fileID: 1866651242933062860}
|
||||
- component: {fileID: 1995768815968683845}
|
||||
- component: {fileID: 6770120175933505588}
|
||||
- component: {fileID: 6047348452593534959}
|
||||
m_Layer: 10
|
||||
m_Name: SwordKnight_E
|
||||
@ -9022,19 +9021,6 @@ CapsuleCollider:
|
||||
m_Height: 1.6
|
||||
m_Direction: 1
|
||||
m_Center: {x: 0, y: 0.8, z: 0}
|
||||
--- !u!114 &6770120175933505588
|
||||
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: b3815b2d4a7cc254e8141b8720fe6738, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
moveType: 2
|
||||
--- !u!114 &6047348452593534959
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -9100,6 +9086,8 @@ MonoBehaviour:
|
||||
<TargetInfo>k__BackingField:
|
||||
transform: {fileID: 0}
|
||||
collider: {fileID: 0}
|
||||
<MoveType>k__BackingField: 2
|
||||
<IsCommanded>k__BackingField: 0
|
||||
--- !u!1 &156456
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -8842,7 +8842,6 @@ GameObject:
|
||||
- component: {fileID: 2465164759345150209}
|
||||
- component: {fileID: 5315314452492636260}
|
||||
- component: {fileID: 4374537182398505653}
|
||||
- component: {fileID: -6091092864301247192}
|
||||
- component: {fileID: 1001412064052513076}
|
||||
m_Layer: 10
|
||||
m_Name: Swordman_E
|
||||
@ -9022,19 +9021,6 @@ CapsuleCollider:
|
||||
m_Height: 1.6
|
||||
m_Direction: 1
|
||||
m_Center: {x: 0, y: 0.8, z: 0}
|
||||
--- !u!114 &-6091092864301247192
|
||||
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: b3815b2d4a7cc254e8141b8720fe6738, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
moveType: 2
|
||||
--- !u!114 &1001412064052513076
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -9100,6 +9086,8 @@ MonoBehaviour:
|
||||
<TargetInfo>k__BackingField:
|
||||
transform: {fileID: 0}
|
||||
collider: {fileID: 0}
|
||||
<MoveType>k__BackingField: 2
|
||||
<IsCommanded>k__BackingField: 0
|
||||
--- !u!1 &156456
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -8842,7 +8842,6 @@ GameObject:
|
||||
- component: {fileID: -1452054039192376132}
|
||||
- component: {fileID: 7512442584761959655}
|
||||
- component: {fileID: 1485348745952943168}
|
||||
- component: {fileID: -4856147847642951458}
|
||||
- component: {fileID: 5368244484501432161}
|
||||
m_Layer: 9
|
||||
m_Name: Archer_P
|
||||
@ -9022,19 +9021,6 @@ CapsuleCollider:
|
||||
m_Height: 1.6
|
||||
m_Direction: 1
|
||||
m_Center: {x: 0, y: 0.8, z: 0}
|
||||
--- !u!114 &-4856147847642951458
|
||||
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: b3815b2d4a7cc254e8141b8720fe6738, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
moveType: 1
|
||||
--- !u!114 &5368244484501432161
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -9100,6 +9086,8 @@ MonoBehaviour:
|
||||
<TargetInfo>k__BackingField:
|
||||
transform: {fileID: 0}
|
||||
collider: {fileID: 0}
|
||||
<MoveType>k__BackingField: 1
|
||||
<IsCommanded>k__BackingField: 0
|
||||
arrowPrefab: {fileID: 3190292116200820221, guid: 09f461c60481dea4b975222675a2682f,
|
||||
type: 3}
|
||||
arrowMaxSize: 100
|
||||
|
@ -8842,7 +8842,6 @@ GameObject:
|
||||
- component: {fileID: 5092290984078098781}
|
||||
- component: {fileID: 2614437605201190422}
|
||||
- component: {fileID: 2219967035923003510}
|
||||
- component: {fileID: 7784077776967129375}
|
||||
- component: {fileID: 6907943215527842660}
|
||||
m_Layer: 9
|
||||
m_Name: Axeman_P
|
||||
@ -9022,19 +9021,6 @@ CapsuleCollider:
|
||||
m_Height: 1.6
|
||||
m_Direction: 1
|
||||
m_Center: {x: 0, y: 0.8, z: 0}
|
||||
--- !u!114 &7784077776967129375
|
||||
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: b3815b2d4a7cc254e8141b8720fe6738, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
moveType: 2
|
||||
--- !u!114 &6907943215527842660
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -9100,6 +9086,8 @@ MonoBehaviour:
|
||||
<TargetInfo>k__BackingField:
|
||||
transform: {fileID: 0}
|
||||
collider: {fileID: 0}
|
||||
<MoveType>k__BackingField: 2
|
||||
<IsCommanded>k__BackingField: 0
|
||||
--- !u!1 &156456
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -8842,7 +8842,6 @@ GameObject:
|
||||
- component: {fileID: 3215129809532427712}
|
||||
- component: {fileID: 8718300241156730733}
|
||||
- component: {fileID: 13124744015303705}
|
||||
- component: {fileID: 7794032711994907147}
|
||||
- component: {fileID: 5358608732463309424}
|
||||
m_Layer: 9
|
||||
m_Name: Spearman_P
|
||||
@ -9022,19 +9021,6 @@ CapsuleCollider:
|
||||
m_Height: 1.6
|
||||
m_Direction: 1
|
||||
m_Center: {x: 0, y: 0.8, z: 0}
|
||||
--- !u!114 &7794032711994907147
|
||||
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: b3815b2d4a7cc254e8141b8720fe6738, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
moveType: 2
|
||||
--- !u!114 &5358608732463309424
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -9100,6 +9086,8 @@ MonoBehaviour:
|
||||
<TargetInfo>k__BackingField:
|
||||
transform: {fileID: 0}
|
||||
collider: {fileID: 0}
|
||||
<MoveType>k__BackingField: 2
|
||||
<IsCommanded>k__BackingField: 0
|
||||
--- !u!1 &156456
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -8842,7 +8842,6 @@ GameObject:
|
||||
- component: {fileID: 5757796364526883762}
|
||||
- component: {fileID: 4974866494169781262}
|
||||
- component: {fileID: 9121247047284190495}
|
||||
- component: {fileID: -5759407904415877482}
|
||||
- component: {fileID: 577732947051587098}
|
||||
m_Layer: 9
|
||||
m_Name: SwordKnight_P
|
||||
@ -9022,19 +9021,6 @@ CapsuleCollider:
|
||||
m_Height: 1.6
|
||||
m_Direction: 1
|
||||
m_Center: {x: 0, y: 0.8, z: 0}
|
||||
--- !u!114 &-5759407904415877482
|
||||
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: b3815b2d4a7cc254e8141b8720fe6738, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
moveType: 2
|
||||
--- !u!114 &577732947051587098
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -9100,6 +9086,8 @@ MonoBehaviour:
|
||||
<TargetInfo>k__BackingField:
|
||||
transform: {fileID: 0}
|
||||
collider: {fileID: 0}
|
||||
<MoveType>k__BackingField: 2
|
||||
<IsCommanded>k__BackingField: 0
|
||||
--- !u!1 &156456
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -8842,7 +8842,6 @@ GameObject:
|
||||
- component: {fileID: -7252639514611643757}
|
||||
- component: {fileID: 4344432134670323988}
|
||||
- component: {fileID: 6882424985411624636}
|
||||
- component: {fileID: 2583839811861868434}
|
||||
- component: {fileID: 1136834195750313725}
|
||||
m_Layer: 9
|
||||
m_Name: Swordman_P
|
||||
@ -9022,19 +9021,6 @@ CapsuleCollider:
|
||||
m_Height: 1.6
|
||||
m_Direction: 1
|
||||
m_Center: {x: 0, y: 0.8, z: 0}
|
||||
--- !u!114 &2583839811861868434
|
||||
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: b3815b2d4a7cc254e8141b8720fe6738, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
moveType: 2
|
||||
--- !u!114 &1136834195750313725
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -9100,6 +9086,8 @@ MonoBehaviour:
|
||||
<TargetInfo>k__BackingField:
|
||||
transform: {fileID: 0}
|
||||
collider: {fileID: 0}
|
||||
<MoveType>k__BackingField: 2
|
||||
<IsCommanded>k__BackingField: 0
|
||||
--- !u!1 &156456
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
Loading…
Reference in New Issue
Block a user