#8 유닛 이동, 공격 테스트 중

- Ai프리팹 이동속도 변경, 애니메이션 및 애니메이션 이벤트 추가 및 변경
- Enemy의 화살이 안맞는 오류 수정
- 유닛 생성시 UnitName이 아무 값도 안들어있으면 자동 이름변경
- 인터페이스(IAiMover, IFieldOfView, IDamageable) 구조 변경
- 유닛 선택 구조 변경(여러 유닛 겹쳐서 선택하던 오류 수정)
This commit is contained in:
NTG_Lenovo 2023-08-17 16:57:46 +09:00
parent 6ba9aed9f9
commit 7fa593f6ee
57 changed files with 756889 additions and 34030 deletions

File diff suppressed because it is too large Load Diff

View File

@ -35,13 +35,17 @@ namespace BlueWaterProject
[Tooltip("캐릭터가 선택되었을 때 색상")]
[SerializeField] protected Color selectedSkinColor = Color.blue;
protected bool isAttacking;
protected AttackerType attackerType;
[SerializeField] protected bool isAttacking;
[SerializeField] protected AttackerType attackerType;
private Vector3 commandedPos;
protected Animator aiAnimator;
protected NavMeshAgent navMeshAgent;
private UnitController myUnitController;
private UnitController mouseEnterUnitController;
private UnitSelection unitSelection;
private CapsuleCollider myCollider;
private CapsuleCollider hitBoxCollider;
private static readonly int SpeedHash = Animator.StringToHash("Speed");
protected static readonly int AttackHash = Animator.StringToHash("Attack");
@ -75,6 +79,9 @@ namespace BlueWaterProject
FindMaterial();
aiAnimator = Utils.GetComponentAndAssert<Animator>(transform);
navMeshAgent = Utils.GetComponentAndAssert<NavMeshAgent>(transform);
myUnitController = Utils.GetComponentAndAssert<UnitController>(transform.parent);
myCollider = Utils.GetComponentAndAssert<CapsuleCollider>(transform);
hitBoxCollider = Utils.GetComponentAndAssert<CapsuleCollider>(transform.Find("HitBox"));
unitSelection = FindObjectOfType<UnitSelection>();
@ -143,8 +150,13 @@ namespace BlueWaterProject
public float GetCurrentHp() => AiStat.currentHp;
public void TakeDamage(AiStat attacker, AiStat defender)
public void TakeDamage(AiStat attacker, AiStat defender, Vector3? attackPos = null)
{
if (!TargetTransform && attackPos != null)
{
BeAttackedMovement((Vector3)attackPos);
}
// 회피 성공 체크
if (Random.Range(0, 100) < defender.avoidanceRate)
{
@ -166,13 +178,18 @@ namespace BlueWaterProject
// 죽었는지 체크
if (changeHp == 0f)
{
myCollider.enabled = false;
hitBoxCollider.enabled = false;
navMeshAgent.isStopped = true;
navMeshAgent.velocity = Vector3.zero;
var randomValue = Random.Range(0, 2);
aiAnimator.SetInteger(DeathTypeHash, randomValue);
// TODO : 죽었을 때 처리(죽는 애니메이션 이후 사라지는 효과 등)
aiAnimator.SetTrigger(DeathHash);
Invoke(nameof(DestroyObject), 5f);
Invoke(nameof(DestroyObject), 3f);
return;
}
@ -193,11 +210,13 @@ namespace BlueWaterProject
[field: SerializeField] public Collider[] ColliderWithinRange { get; set; } = new Collider[TARGET_MAX_SIZE];
[field: SerializeField] public List<TargetInfo> TargetInfoList { get; set; } = new(TARGET_MAX_SIZE);
//[field: SerializeField] public List<TargetInfo> TargetInfoList { get; set; } = new(TARGET_MAX_SIZE);
[field: SerializeField] public IAiStat IaiStat { get; set; }
[field: SerializeField] public TargetInfo TargetInfo { get; set; } = new();
[field: SerializeField] public Transform TargetTransform { get; set; }
//[field: SerializeField] public TargetInfo TargetInfo { get; set; } = new();
private const int TARGET_MAX_SIZE = 30;
@ -210,9 +229,9 @@ namespace BlueWaterProject
Gizmos.color = Color.green;
Gizmos.DrawWireSphere(myPos, ViewRadius);
if (TargetInfo.transform == null) return;
if (!TargetTransform) return;
Debug.DrawLine(myPos, TargetInfo.transform.position, Color.red);
Debug.DrawLine(myPos, TargetTransform.position, Color.red);
}
public IEnumerator FindTarget()
@ -220,7 +239,6 @@ namespace BlueWaterProject
while (true)
{
Array.Clear(ColliderWithinRange, 0, TARGET_MAX_SIZE);
TargetInfoList.Clear();
var myPos = transform.position;
var maxColliderCount = Physics.OverlapSphereNonAlloc(myPos, ViewRadius, ColliderWithinRange,
@ -228,71 +246,37 @@ namespace BlueWaterProject
if (maxColliderCount <= 0)
{
TargetInfo.DefaultSetting();
TargetTransform = null;
yield return FindTargetWaitTime;
continue;
}
var nearestDistance = Mathf.Infinity;
Transform nearestTargetTransform = null;
for (var i = 0; i < maxColliderCount; i++)
{
IaiStat = ColliderWithinRange[i].GetComponent<IAiStat>();
if (IaiStat != null)
{
TargetInfoList.Add(new TargetInfo(ColliderWithinRange[i].transform, ColliderWithinRange[i], IaiStat));
}
var distanceToTarget = Vector3.Distance(transform.position, ColliderWithinRange[i].transform.position);
if (distanceToTarget >= nearestDistance) continue;
nearestDistance = distanceToTarget;
nearestTargetTransform = ColliderWithinRange[i].transform;
}
if (TargetInfoList.Count <= 0)
{
TargetInfo.DefaultSetting();
yield return FindTargetWaitTime;
continue;
}
int nearestIndex;
float nearestDistance;
TargetTransform = nearestTargetTransform;
if (TargetInfoList[0].iAiStat.GetCurrentHp() <= 0)
{
nearestIndex = 0;
nearestDistance = float.PositiveInfinity;
}
else
{
nearestIndex = 0;
nearestDistance = Vector3.Distance(TargetInfoList[0].transform.position, myPos);
}
for (var i = 1; i < TargetInfoList.Count; i++)
{
var distance = Vector3.Distance(TargetInfoList[i].transform.position, myPos);
if (nearestDistance < distance || TargetInfoList[i].iAiStat.GetCurrentHp() <= 0) continue;
nearestIndex = i;
nearestDistance = distance;
}
if (TargetInfoList[nearestIndex].transform)
{
TargetInfo.SetTargetInfo(TargetInfoList[nearestIndex].transform, TargetInfoList[nearestIndex].collider, TargetInfoList[nearestIndex].iAiStat);
}
else
{
TargetInfo.DefaultSetting();
}
yield return FindTargetWaitTime;
}
}
public void UpdateLookAtTarget()
{
if (TargetInfo.transform)
if (TargetTransform)
{
navMeshAgent.updateRotation = false;
var targetPos = TargetInfo.transform.position;
var targetPos = TargetTransform.position;
targetPos.y = transform.position.y;
transform.LookAt(targetPos);
}
@ -308,7 +292,9 @@ namespace BlueWaterProject
[field: Space(10f)]
[field: Title("AiMover")]
[field: SerializeField] public MoveType MoveType { get; set; }
[field: SerializeField] public MoveType AttackMoveType { get; set; }
[field: SerializeField] public MoveType BeAttackedMoveType { get; set; }
[field: SerializeField] public bool IsCommanded { get; set; }
@ -316,22 +302,69 @@ namespace BlueWaterProject
{
aiAnimator.SetFloat(SpeedHash, navMeshAgent.velocity.normalized.magnitude);
if (IsCommanded || isAttacking)
if (IsCommanded)
{
if (navMeshAgent.destination == commandedPos)
{
if (navMeshAgent.remainingDistance <= navMeshAgent.stoppingDistance)
{
IsCommanded = false;
}
}
else
{
if (isAttacking) return;
navMeshAgent.SetDestination(commandedPos);
}
}
else
{
if (!TargetInfo.transform || MoveType is MoveType.NONE or MoveType.FIXED) return;
navMeshAgent.SetDestination(TargetInfo.transform.position);
if (!TargetTransform) return;
switch (AttackMoveType)
{
case MoveType.NONE:
break;
case MoveType.FIXED:
break;
case MoveType.MOVE:
if (Vector3.Distance(transform.position, TargetTransform.position) > AiStat.atkRange)
{
navMeshAgent.SetDestination(TargetTransform.position);
}
break;
default:
throw new ArgumentOutOfRangeException();
}
}
}
public void BeAttackedMovement(Vector3 attackPos)
{
if (TargetTransform) return;
switch (BeAttackedMoveType)
{
case MoveType.NONE:
break;
case MoveType.FIXED:
break;
case MoveType.MOVE:
if (Vector3.Distance(transform.position, attackPos) > AiStat.atkRange)
{
myUnitController.MoveCommand(attackPos);
}
break;
default:
throw new ArgumentOutOfRangeException();
}
}
public void MoveTarget(Vector3 targetPos)
{
IsCommanded = true;
navMeshAgent.SetDestination(targetPos);
commandedPos = targetPos;
}
#endregion
@ -368,11 +401,11 @@ namespace BlueWaterProject
}
}
public void ResetHighlight() => SetOutlineColor(Color.black);
public void MouseEnterHighlight() => SetOutlineColor(Color.white);
public void SelectedHighlight() => SetOutlineColor(Color.blue);
public void ResetHighlight() => SetOutlineColor(defaultSkinColor);
public void MouseEnterHighlight() => SetOutlineColor(mouseEnterHighlightSkinColor);
public void SelectedHighlight() => SetOutlineColor(selectedSkinColor);
private void DestroyObject() => Destroy(gameObject);
public bool GetIsAttacking() => isAttacking;
public void OnAttacking(int boolValue) => isAttacking = boolValue == 1;
public NavMeshAgent GetNavMeshAgent() => navMeshAgent;
public Animator GetAnimator() => aiAnimator;
public void SetCurrentHp(float value) => AiStat.currentHp = value;

View File

@ -29,6 +29,8 @@ namespace BlueWaterProject
private IEnumerator shootArrowCoroutine;
private IObjectPool<Arrow> arrowPool;
[SerializeField] private Vector3 shootOffset = new(0f, 0.8f, 0);
#endregion
@ -50,23 +52,6 @@ namespace BlueWaterProject
protected override void Attack()
{
// if (aiMover.GetIsCommanded())
// {
// if (shootArrowCoroutine == null) return;
//
// StopCoroutine(shootArrowCoroutine);
// shootArrowCoroutine = null;
// isAttacking = false;
// }
// else
// {
// if (shootArrowCoroutine != null || !TargetInfo.transform ||
// AiStat.atkRange < Vector3.Distance(transform.position, TargetInfo.transform.position)) return;
//
// isAttacking = true;
// shootArrowCoroutine = ShootArrowAnimation();
// StartCoroutine(shootArrowCoroutine);
// }
StartCoroutine(nameof(ShootArrowAnimation));
}
@ -74,13 +59,18 @@ namespace BlueWaterProject
{
while (true)
{
if (!TargetInfo.transform)
if (!TargetTransform)
{
yield return new WaitForSeconds(0.5f);
continue;
}
aiAnimator.SetTrigger(AttackHash);
isAttacking = true;
while (isAttacking)
{
yield return null;
}
yield return new WaitForSeconds(AiStat.atkCooldown);
}
@ -89,17 +79,19 @@ namespace BlueWaterProject
/// <summary>
/// Archer attack 애니메이션에 event 부착용 함수
/// </summary>
public void ShootArrow()
public void OnShootArrow()
{
var arrow = arrowPool.Get();
arrow.SetShootingArrow(shootLocation.position,
TargetInfo.collider.bounds.center, AiStat, attackerType, inaccuracy);
arrow.SetShootingArrow(shootLocation.position, transform.position,
TargetTransform.position + shootOffset, AiStat, attackerType, inaccuracy);
arrow.ShootArrowCoroutine();
}
public void StopMove() => navMeshAgent.isStopped = true;
public void StartMove() => navMeshAgent.isStopped = false;
/// <summary>
/// Archer attack 애니메이션에 event 부착용 함수
/// </summary>
public void OnStoppedMove(int boolValue) => navMeshAgent.isStopped = boolValue == 1;
#endregion
#region ObjectPool Function

View File

@ -42,13 +42,13 @@ namespace BlueWaterProject
public class UnitController : MonoBehaviour
{
public Unit unit;
#if UNITY_EDITOR
private void OnDrawGizmosSelected()
{
if (unit == null || unit.soliderCount <= 0) return;
var matrix = UnitManager.Inst.UnitMatrices.Find(um => um.soldiers == unit.soliderCount);
var unitManager = UnitManager.Inst != null ? UnitManager.Inst : FindObjectOfType<UnitManager>();
var matrix = unitManager.UnitMatrices.Find(um => um.soldiers == unit.soliderCount);
if (matrix == null) return;
for (var i = 0; i < unit.soliderCount; i++)
@ -61,11 +61,10 @@ namespace BlueWaterProject
var spawnPosition = transform.position + new Vector3(xOffset, 0, zOffset);
var ray = new Ray(spawnPosition, Vector3.down);
Gizmos.color = Physics.Raycast(ray, UnitManager.Inst.MaxGroundDistance, UnitManager.Inst.GroundLayer) ? Color.blue : Color.red;
Gizmos.DrawRay(ray.origin, ray.direction * UnitManager.Inst.MaxGroundDistance);
Gizmos.color = Physics.Raycast(ray, unitManager.MaxGroundDistance, unitManager.GroundLayer) ? Color.blue : Color.red;
Gizmos.DrawRay(ray.origin, ray.direction * unitManager.MaxGroundDistance);
}
}
#endif
[ContextMenu("유닛 생성")]
public void CreateUnit()
@ -73,18 +72,18 @@ namespace BlueWaterProject
if (!Application.isPlaying)
{
var unitManager = FindObjectOfType<UnitManager>();
unitManager.CreateUnit(this, unit);
unitManager.CreateUnit(this);
return;
}
UnitManager.Inst.CreateUnit(this, unit);
UnitManager.Inst.CreateUnit(this);
}
public void MoveCommand(Vector3 targetPos)
{
foreach (var soldier in unit.soldierList)
{
soldier.GetNavMeshAgent().SetDestination(targetPos);
soldier.MoveTarget(targetPos);
}
}
}

View File

@ -88,22 +88,47 @@ namespace BlueWaterProject
/// <summary>
/// 부대 생성 함수
/// </summary>
public void CreateUnit(UnitController unitController, Unit unit)
public void CreateUnit(UnitController unitController)
{
DestroyDeployedSoldiers(unitController);
unitController.gameObject.name = unit.unitName;
var baseName = soliderPrefabList[(int)unitController.unit.unitType - 1].name;
if (string.IsNullOrEmpty(unitController.unit.unitName))
{
const int maxIterations = 100;
var namingNum = 0;
while (namingNum < maxIterations)
{
var newUnitName = $"{baseName}_Unit_{namingNum + 1:00}";
var checkGameObject = GameObject.Find(newUnitName);
if (checkGameObject && checkGameObject != unitController.gameObject)
{
namingNum++;
}
else
{
unitController.gameObject.name = newUnitName;
break;
}
}
}
else
{
unitController.gameObject.name = unitController.unit.unitName;
}
unitController.gameObject.layer = LayerMask.NameToLayer("Unit");
unit.soldierList = new List<AiController>(unit.soliderCount);
var objectNameBuilder = new StringBuilder();
var matrix = UnitMatrices.Find(um => um.soldiers == unit.soliderCount);
unitController.unit.soldierList = new List<AiController>(unitController.unit.soliderCount);
var matrix = UnitMatrices.Find(um => um.soldiers == unitController.unit.soliderCount);
if (matrix == null)
{
Debug.LogError("사용할 수 없는 병력의 숫자입니다. UnitManager의 UnitMatrices를 확인해주세요.");
return;
}
for (var i = 0; i < unit.soliderCount; i++)
for (var i = 0; i < unitController.unit.soliderCount; i++)
{
var row = i / matrix.columns;
var column = i % matrix.columns;
@ -124,21 +149,15 @@ namespace BlueWaterProject
return;
}
var soldierObject = Instantiate(soliderPrefabList[(int)unit.unitType - 1], spawnPosition, Quaternion.identity, unitController.transform).GetComponent<AiController>();
var soldierObject = Instantiate(soliderPrefabList[(int)unitController.unit.unitType - 1], spawnPosition,
Quaternion.identity, unitController.transform).GetComponent<AiController>();
soldierObject.transform.localRotation = Quaternion.identity;
objectNameBuilder.Clear();
objectNameBuilder.Append(soliderPrefabList[(int)unit.unitType - 1].name);
objectNameBuilder.Append("_");
objectNameBuilder.AppendFormat("{0:00}", i + 1);
soldierObject.name = objectNameBuilder.ToString();
unit.soldierList.Add(soldierObject);
var newSoldierName = $"{baseName}_{i + 1:00}";
soldierObject.name = newSoldierName;
unitController.unit.soldierList.Add(soldierObject);
}
// var boxCollider = unitController.gameObject.AddComponent<BoxCollider>();
// boxCollider.isTrigger = true;
// boxCollider.center = new Vector3(0f, 0.3f, 0f);
// boxCollider.size = new Vector3(matrix.columns * 0.5f, 1f, matrix.rows * 0.5f);
}
/// <summary>
@ -159,19 +178,6 @@ namespace BlueWaterProject
DestroyImmediate(unitController.transform.GetChild(i).gameObject);
}
}
// var boxColliders = unitController.GetComponents<BoxCollider>();
// foreach (var boxCollider in boxColliders)
// {
// if (Application.isPlaying)
// {
// Destroy(boxCollider);
// }
// else
// {
// DestroyImmediate(boxCollider);
// }
// }
}
#endregion

View File

@ -1,6 +1,7 @@
using System;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.Serialization;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
@ -8,41 +9,14 @@ namespace BlueWaterProject
public class UnitSelection : MonoBehaviour
{
#region Property and variable
[Tooltip("선택된 부대")]
[SerializeField] private UnitController selectedUnitController;
public UnitController SelectedUnitController
{
get => selectedUnitController;
set
{
tempUnitController = selectedUnitController;
selectedUnitController = value;
if (selectedUnitController == null)
{
if (tempUnitController != null)
{
foreach (var soldier in tempUnitController.unit.soldierList)
{
soldier.ResetHighlight();
}
tempUnitController = null;
}
GameManager.Inst.DefaultSpeedMode();
}
else
{
GameManager.Inst.SlowSpeedMode();
}
}
}
[field: SerializeField] public UnitController SelectedUnitController { get; private set; }
[SerializeField] private LayerMask unitLayer;
[SerializeField] private LayerMask groundLayer;
private UnitController tempUnitController;
private UnitController previousUnitController;
private Camera mainCamera;
#endregion
@ -79,22 +53,64 @@ namespace BlueWaterProject
var ray = mainCamera.ScreenPointToRay(Mouse.current.position.ReadValue());
// 부대를 클릭 했을 때,
if (Physics.Raycast(ray, out var hit, Mathf.Infinity, unitLayer))
{
var unitController = hit.collider.transform.parent.GetComponent<UnitController>();
if (unitController != null)
{
SelectedUnitController = unitController;
if (unitController == null) return;
foreach (var soldier in selectedUnitController.unit.soldierList)
// 선택된 부대가 없었을 때,
if (SelectedUnitController == null)
{
foreach (var soldier in unitController.unit.soldierList)
{
soldier.SelectedHighlight();
}
SelectedUnitController = unitController;
GameManager.Inst.SlowSpeedMode();
}
// 선택된 부대가 이미 선택된 부대일 때,
else if (SelectedUnitController == unitController)
{
foreach (var soldier in SelectedUnitController.unit.soldierList)
{
soldier.ResetHighlight();
}
SelectedUnitController = null;
GameManager.Inst.DefaultSpeedMode();
}
// 다른 부대가 선택될 때,
else
{
foreach (var soldier in unitController.unit.soldierList)
{
soldier.SelectedHighlight();
}
foreach (var soldier in SelectedUnitController.unit.soldierList)
{
soldier.ResetHighlight();
}
SelectedUnitController = unitController;
}
}
// 부대를 클릭하지 않았을 때,
else
{
// 선택된 부대가 없었을 때,
if (SelectedUnitController == null) return;
// 선택된 부대가 있었을 때,
foreach (var soldier in SelectedUnitController.unit.soldierList)
{
soldier.ResetHighlight();
}
SelectedUnitController = null;
GameManager.Inst.DefaultSpeedMode();
}
}
@ -108,12 +124,15 @@ namespace BlueWaterProject
{
var targetPos = hit.point;
SelectedUnitController.MoveCommand(targetPos);
SelectedUnitController = null;
}
else
foreach (var soldier in SelectedUnitController.unit.soldierList)
{
SelectedUnitController = null;
soldier.ResetHighlight();
}
SelectedUnitController = null;
GameManager.Inst.DefaultSpeedMode();
}
#endregion

View File

@ -20,6 +20,7 @@ namespace BlueWaterProject
[SerializeField] private bool isAttacked;
private float g = Mathf.Abs(Physics.gravity.y);
private float inaccuracy;
private Vector3? attackerPos;
private Vector3 targetPos;
private AttackerType attackerType;
@ -48,13 +49,17 @@ namespace BlueWaterProject
private void OnTriggerEnter(Collider other)
{
if (isAttacked) return;
if (other.gameObject.layer == LayerMask.NameToLayer("Ground") ||
other.gameObject.layer == LayerMask.NameToLayer("Water"))
{
isAttacked = true;
DestroyObject();
}
else if (other.gameObject.layer == LayerMask.NameToLayer("HitBox"))
{
print(other.gameObject);
switch (attackerType)
{
case AttackerType.NONE:
@ -72,7 +77,7 @@ namespace BlueWaterProject
}
break;
case AttackerType.ENEMY:
if (!other.gameObject.CompareTag("Player") || !other.gameObject.CompareTag("Pirate"))
if (!other.gameObject.CompareTag("Player") && !other.gameObject.CompareTag("Pirate"))
{
return;
}
@ -81,8 +86,12 @@ namespace BlueWaterProject
throw new ArgumentOutOfRangeException();
}
var iDamageable = other.GetComponentInParent<IDamageable>();
iDamageable.TakeDamage(attackerStat, iDamageable.AiStat);
if (attackerPos != null)
{
iDamageable.TakeDamage(attackerStat, iDamageable.AiStat, (Vector3)attackerPos);
}
isAttacked = true;
DestroyObject();
}
}
@ -152,9 +161,14 @@ namespace BlueWaterProject
/// <summary>
/// 화살이 발사 되기 직전에 필요한 데이터들을 입력받는 함수
/// </summary>
public void SetShootingArrow(Vector3 shootPos, Vector3 targetPosition, AiStat attackerAiStat, AttackerType type, float inaccuracyValue)
public void SetShootingArrow(Vector3 shootLocationPos, Vector3? attackPos, Vector3 targetPosition, AiStat attackerAiStat, AttackerType type, float inaccuracyValue)
{
transform.position = shootPos;
isAttacked = false;
transform.position = shootLocationPos;
if (attackPos != null)
{
attackerPos = (Vector3)attackPos;
}
targetPos = targetPosition;
attackerStat = attackerAiStat;
attackerType = type;

View File

@ -13,7 +13,9 @@ namespace BlueWaterProject
public interface IAiMover : IAiBase
{
// Properties
MoveType MoveType { get; set; }
MoveType AttackMoveType { get; set; }
MoveType BeAttackedMoveType { get; set; }
bool IsCommanded { get; set; }

View File

@ -1,8 +1,10 @@
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public interface IDamageable : IAiStat
{
public void TakeDamage(AiStat attacker, AiStat defender);
public void TakeDamage(AiStat attacker, AiStat defender, Vector3? attackPos = null);
}
}

View File

@ -1,47 +1,9 @@
using System;
using System.Collections;
using System.Collections.Generic;
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
@ -52,16 +14,16 @@ namespace BlueWaterProject
float ViewRadius { get; set; }
Collider[] ColliderWithinRange { get; set; }
List<TargetInfo> TargetInfoList { get; set; }
IAiStat IaiStat { get; set; }
TargetInfo TargetInfo { get; set; }
Transform TargetTransform { get; set; }
// Functions
void DrawGizmosInFieldOfView();
IEnumerator FindTarget();
void UpdateLookAtTarget();
}
}

View File

@ -9033,13 +9033,17 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: b934a5073db193343a89fc4597056b68, type: 3}
m_Name:
m_EditorClassIdentifier:
skinMaterial: []
skinMaterialList: []
defaultSkinColor: {r: 0, g: 0, b: 0, a: 1}
mouseEnterHighlightSkinColor: {r: 1, g: 1, b: 1, a: 1}
selectedSkinColor: {r: 0, g: 0, b: 1, a: 1}
isAttacking: 0
<AiStat>k__BackingField:
maxHp: 30
currentHp: 0
atk: 50
def: 0
moveSpd: 3
moveSpd: 5
atkCooldown: 3
atkRange: 15
usingShield: 0
@ -9082,18 +9086,17 @@ MonoBehaviour:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
<TargetInfoList>k__BackingField: []
<TargetInfo>k__BackingField:
transform: {fileID: 0}
collider: {fileID: 0}
<MoveType>k__BackingField: 1
<TargetTransform>k__BackingField: {fileID: 0}
<AttackMoveType>k__BackingField: 1
<BeAttackedMoveType>k__BackingField: 1
<IsCommanded>k__BackingField: 0
arrowPrefab: {fileID: 3190292116200820221, guid: 09f461c60481dea4b975222675a2682f,
type: 3}
arrowMaxSize: 100
shootLocation: {fileID: 461634}
arrowsPoolLocation: {fileID: 0}
inaccuracy: 1
inaccuracy: 0.5
shootOffset: {x: 0, y: 0.8, z: 0}
--- !u!1 &156456
GameObject:
m_ObjectHideFlags: 0

View File

@ -9033,13 +9033,17 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 8aa9e82d64fb86549a75d2c51f97dd21, type: 3}
m_Name:
m_EditorClassIdentifier:
skinMaterial: []
skinMaterialList: []
defaultSkinColor: {r: 0, g: 0, b: 0, a: 1}
mouseEnterHighlightSkinColor: {r: 1, g: 1, b: 1, a: 1}
selectedSkinColor: {r: 0, g: 0, b: 1, a: 1}
isAttacking: 0
<AiStat>k__BackingField:
maxHp: 60
currentHp: 0
atk: 40
def: 10
moveSpd: 2.5
moveSpd: 4.5
atkCooldown: 2
atkRange: 3
usingShield: 1
@ -9082,11 +9086,9 @@ MonoBehaviour:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
<TargetInfoList>k__BackingField: []
<TargetInfo>k__BackingField:
transform: {fileID: 0}
collider: {fileID: 0}
<MoveType>k__BackingField: 2
<TargetTransform>k__BackingField: {fileID: 0}
<AttackMoveType>k__BackingField: 2
<BeAttackedMoveType>k__BackingField: 1
<IsCommanded>k__BackingField: 0
--- !u!1 &156456
GameObject:

View File

@ -9033,13 +9033,17 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d17ac59ab4fe31846b058c6e1ca1cbb8, type: 3}
m_Name:
m_EditorClassIdentifier:
skinMaterial: []
skinMaterialList: []
defaultSkinColor: {r: 0, g: 0, b: 0, a: 1}
mouseEnterHighlightSkinColor: {r: 1, g: 1, b: 1, a: 1}
selectedSkinColor: {r: 0, g: 0, b: 1, a: 1}
isAttacking: 0
<AiStat>k__BackingField:
maxHp: 40
currentHp: 0
atk: 50
def: 5
moveSpd: 3
moveSpd: 5
atkCooldown: 2
atkRange: 3
usingShield: 0
@ -9082,11 +9086,9 @@ MonoBehaviour:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
<TargetInfoList>k__BackingField: []
<TargetInfo>k__BackingField:
transform: {fileID: 0}
collider: {fileID: 0}
<MoveType>k__BackingField: 2
<TargetTransform>k__BackingField: {fileID: 0}
<AttackMoveType>k__BackingField: 2
<BeAttackedMoveType>k__BackingField: 2
<IsCommanded>k__BackingField: 0
--- !u!1 &156456
GameObject:

View File

@ -9033,13 +9033,17 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 4363b722ccf9a2b49b7506fd355c6a4d, type: 3}
m_Name:
m_EditorClassIdentifier:
skinMaterial: []
skinMaterialList: []
defaultSkinColor: {r: 0, g: 0, b: 0, a: 1}
mouseEnterHighlightSkinColor: {r: 1, g: 1, b: 1, a: 1}
selectedSkinColor: {r: 0, g: 0, b: 1, a: 1}
isAttacking: 0
<AiStat>k__BackingField:
maxHp: 60
currentHp: 0
atk: 30
def: 10
moveSpd: 2.5
moveSpd: 5.5
atkCooldown: 1.5
atkRange: 1.5
usingShield: 1
@ -9082,11 +9086,9 @@ MonoBehaviour:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
<TargetInfoList>k__BackingField: []
<TargetInfo>k__BackingField:
transform: {fileID: 0}
collider: {fileID: 0}
<MoveType>k__BackingField: 2
<TargetTransform>k__BackingField: {fileID: 0}
<AttackMoveType>k__BackingField: 2
<BeAttackedMoveType>k__BackingField: 1
<IsCommanded>k__BackingField: 0
--- !u!1 &156456
GameObject:

View File

@ -9033,13 +9033,17 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a7bb4d34880889448a03ef7d1b0ebee9, type: 3}
m_Name:
m_EditorClassIdentifier:
skinMaterial: []
skinMaterialList: []
defaultSkinColor: {r: 0, g: 0, b: 0, a: 1}
mouseEnterHighlightSkinColor: {r: 1, g: 1, b: 1, a: 1}
selectedSkinColor: {r: 0, g: 0, b: 1, a: 1}
isAttacking: 0
<AiStat>k__BackingField:
maxHp: 45
currentHp: 0
atk: 35
def: 5
moveSpd: 3.5
moveSpd: 6
atkCooldown: 1.5
atkRange: 1.5
usingShield: 0
@ -9082,11 +9086,9 @@ MonoBehaviour:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
<TargetInfoList>k__BackingField: []
<TargetInfo>k__BackingField:
transform: {fileID: 0}
collider: {fileID: 0}
<MoveType>k__BackingField: 2
<TargetTransform>k__BackingField: {fileID: 0}
<AttackMoveType>k__BackingField: 2
<BeAttackedMoveType>k__BackingField: 2
<IsCommanded>k__BackingField: 0
--- !u!1 &156456
GameObject:

View File

@ -9033,13 +9033,17 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: b934a5073db193343a89fc4597056b68, type: 3}
m_Name:
m_EditorClassIdentifier:
skinMaterial: []
skinMaterialList: []
defaultSkinColor: {r: 0, g: 0, b: 0, a: 1}
mouseEnterHighlightSkinColor: {r: 1, g: 1, b: 1, a: 1}
selectedSkinColor: {r: 0, g: 0, b: 1, a: 1}
isAttacking: 0
<AiStat>k__BackingField:
maxHp: 30
currentHp: 0
atk: 50
def: 0
moveSpd: 3
moveSpd: 5
atkCooldown: 3
atkRange: 15
usingShield: 0
@ -9082,18 +9086,17 @@ MonoBehaviour:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
<TargetInfoList>k__BackingField: []
<TargetInfo>k__BackingField:
transform: {fileID: 0}
collider: {fileID: 0}
<MoveType>k__BackingField: 1
<TargetTransform>k__BackingField: {fileID: 0}
<AttackMoveType>k__BackingField: 1
<BeAttackedMoveType>k__BackingField: 1
<IsCommanded>k__BackingField: 0
arrowPrefab: {fileID: 3190292116200820221, guid: 09f461c60481dea4b975222675a2682f,
type: 3}
arrowMaxSize: 100
shootLocation: {fileID: 449662}
arrowsPoolLocation: {fileID: 0}
inaccuracy: 1
inaccuracy: 0.5
shootOffset: {x: 0, y: 0.8, z: 0}
--- !u!1 &156456
GameObject:
m_ObjectHideFlags: 0

View File

@ -9033,13 +9033,17 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 62993cbcb58ab6845897f946bdcb90c6, type: 3}
m_Name:
m_EditorClassIdentifier:
skinMaterial: []
skinMaterialList: []
defaultSkinColor: {r: 0, g: 0, b: 0, a: 1}
mouseEnterHighlightSkinColor: {r: 1, g: 1, b: 1, a: 1}
selectedSkinColor: {r: 0, g: 0, b: 1, a: 1}
isAttacking: 0
<AiStat>k__BackingField:
maxHp: 50
currentHp: 0
atk: 50
def: 0
moveSpd: 2.5
moveSpd: 4.5
atkCooldown: 2.5
atkRange: 3
usingShield: 0
@ -9082,11 +9086,9 @@ MonoBehaviour:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
<TargetInfoList>k__BackingField: []
<TargetInfo>k__BackingField:
transform: {fileID: 0}
collider: {fileID: 0}
<MoveType>k__BackingField: 2
<TargetTransform>k__BackingField: {fileID: 0}
<AttackMoveType>k__BackingField: 2
<BeAttackedMoveType>k__BackingField: 2
<IsCommanded>k__BackingField: 0
--- !u!1 &156456
GameObject:

View File

@ -9033,13 +9033,17 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: d17ac59ab4fe31846b058c6e1ca1cbb8, type: 3}
m_Name:
m_EditorClassIdentifier:
skinMaterial: []
skinMaterialList: []
defaultSkinColor: {r: 0, g: 0, b: 0, a: 1}
mouseEnterHighlightSkinColor: {r: 1, g: 1, b: 1, a: 1}
selectedSkinColor: {r: 0, g: 0, b: 1, a: 1}
isAttacking: 0
<AiStat>k__BackingField:
maxHp: 40
currentHp: 0
atk: 50
def: 5
moveSpd: 3
moveSpd: 5
atkCooldown: 2
atkRange: 3
usingShield: 0
@ -9082,11 +9086,9 @@ MonoBehaviour:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
<TargetInfoList>k__BackingField: []
<TargetInfo>k__BackingField:
transform: {fileID: 0}
collider: {fileID: 0}
<MoveType>k__BackingField: 2
<TargetTransform>k__BackingField: {fileID: 0}
<AttackMoveType>k__BackingField: 2
<BeAttackedMoveType>k__BackingField: 2
<IsCommanded>k__BackingField: 0
--- !u!1 &156456
GameObject:

View File

@ -9033,13 +9033,17 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 4363b722ccf9a2b49b7506fd355c6a4d, type: 3}
m_Name:
m_EditorClassIdentifier:
skinMaterial: []
skinMaterialList: []
defaultSkinColor: {r: 0, g: 0, b: 0, a: 1}
mouseEnterHighlightSkinColor: {r: 1, g: 1, b: 1, a: 1}
selectedSkinColor: {r: 0, g: 0, b: 1, a: 1}
isAttacking: 0
<AiStat>k__BackingField:
maxHp: 60
currentHp: 0
atk: 30
def: 10
moveSpd: 2.5
moveSpd: 5.5
atkCooldown: 1.5
atkRange: 1.5
usingShield: 1
@ -9082,11 +9086,9 @@ MonoBehaviour:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
<TargetInfoList>k__BackingField: []
<TargetInfo>k__BackingField:
transform: {fileID: 0}
collider: {fileID: 0}
<MoveType>k__BackingField: 2
<TargetTransform>k__BackingField: {fileID: 0}
<AttackMoveType>k__BackingField: 2
<BeAttackedMoveType>k__BackingField: 2
<IsCommanded>k__BackingField: 0
--- !u!1 &156456
GameObject:

View File

@ -9033,13 +9033,17 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: a7bb4d34880889448a03ef7d1b0ebee9, type: 3}
m_Name:
m_EditorClassIdentifier:
skinMaterial: []
skinMaterialList: []
defaultSkinColor: {r: 0, g: 0, b: 0, a: 1}
mouseEnterHighlightSkinColor: {r: 1, g: 1, b: 1, a: 1}
selectedSkinColor: {r: 0, g: 0, b: 1, a: 1}
isAttacking: 0
<AiStat>k__BackingField:
maxHp: 45
currentHp: 0
atk: 35
def: 5
moveSpd: 3.5
moveSpd: 6
atkCooldown: 1.5
atkRange: 1.5
usingShield: 0
@ -9082,11 +9086,9 @@ MonoBehaviour:
- {fileID: 0}
- {fileID: 0}
- {fileID: 0}
<TargetInfoList>k__BackingField: []
<TargetInfo>k__BackingField:
transform: {fileID: 0}
collider: {fileID: 0}
<MoveType>k__BackingField: 2
<TargetTransform>k__BackingField: {fileID: 0}
<AttackMoveType>k__BackingField: 2
<BeAttackedMoveType>k__BackingField: 2
<IsCommanded>k__BackingField: 0
--- !u!1 &156456
GameObject:

View File

@ -65,29 +65,7 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-7854804674546960086
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 5304119996036113566}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.625
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-7488432702046877422
--- !u!1101 &-8913211705228774047
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
@ -112,6 +90,28 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-7854804674546960086
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 5304119996036113566}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.625
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-6677449554117134834
AnimatorState:
serializedVersion: 6
@ -257,9 +257,9 @@ AnimatorStateTransition:
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.625
m_ExitTime: 0
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
@ -474,8 +474,7 @@ AnimatorStateMachine:
m_State: {fileID: -4719989283223396458}
m_Position: {x: 310, y: 10, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions:
- {fileID: -7488432702046877422}
m_AnyStateTransitions: []
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
@ -634,6 +633,7 @@ AnimatorState:
m_Transitions:
- {fileID: 301483702199899037}
- {fileID: 7243255047482691604}
- {fileID: -8913211705228774047}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0

View File

@ -87,31 +87,6 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-7488432702046877422
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: TakeDamage
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -4719989283223396458}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-6677449554117134834
AnimatorState:
serializedVersion: 6
@ -138,6 +113,31 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-5683773777560662164
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: TakeDamage
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -4719989283223396458}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-5613045854842106462
AnimatorState:
serializedVersion: 6
@ -237,7 +237,7 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 05a6266c6c1647f4b90ef5524fd4204e, type: 3}
m_Motion: {fileID: 7400000, guid: e1de8a213ab85dd4e95261370bdc06f4, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
@ -257,9 +257,9 @@ AnimatorStateTransition:
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.625
m_ExitTime: 0
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
@ -286,7 +286,7 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 33bd65223d28b1c4cb76a7bebb02a099, type: 3}
m_Motion: {fileID: 7400000, guid: 69f0aa5e93748024493d9bd7ffe5bc8c, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
@ -474,8 +474,7 @@ AnimatorStateMachine:
m_State: {fileID: -4719989283223396458}
m_Position: {x: 310, y: 10, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions:
- {fileID: -7488432702046877422}
m_AnyStateTransitions: []
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
@ -634,6 +633,7 @@ AnimatorState:
m_Transitions:
- {fileID: 301483702199899037}
- {fileID: 7243255047482691604}
- {fileID: -5683773777560662164}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0

View File

@ -262,7 +262,7 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: b9def7c6da9201647b1bd65c6cafe6a8, type: 3}
m_Motion: {fileID: 7400000, guid: bd85d70e29baa894492ba2d7535af14e, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
@ -311,7 +311,7 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 1111ae1477d1e214c84401ea31ee3425, type: 3}
m_Motion: {fileID: 7400000, guid: e631e6ac42f3e1143844a2240ea8642a, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:

View File

@ -87,31 +87,6 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-7488432702046877422
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: TakeDamage
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -4719989283223396458}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-6677449554117134834
AnimatorState:
serializedVersion: 6
@ -237,7 +212,7 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: dabce5525f41e3b43b71afba5951f91a, type: 3}
m_Motion: {fileID: 7400000, guid: 65944dbab9cf50a4093e88d8d4f21254, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
@ -257,9 +232,9 @@ AnimatorStateTransition:
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.625
m_ExitTime: 0
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
@ -286,7 +261,7 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 7ae56d5469e7f334abb22dd37f302bd6, type: 3}
m_Motion: {fileID: 7400000, guid: 4efa1310402cc6546b855a22bedca9b1, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
@ -474,8 +449,7 @@ AnimatorStateMachine:
m_State: {fileID: -4719989283223396458}
m_Position: {x: 310, y: 10, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions:
- {fileID: -7488432702046877422}
m_AnyStateTransitions: []
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
@ -634,6 +608,7 @@ AnimatorState:
m_Transitions:
- {fileID: 301483702199899037}
- {fileID: 7243255047482691604}
- {fileID: 9013410974934723737}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@ -649,3 +624,28 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &9013410974934723737
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: TakeDamage
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -4719989283223396458}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1

View File

@ -87,31 +87,6 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-7488432702046877422
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: TakeDamage
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -4719989283223396458}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-6677449554117134834
AnimatorState:
serializedVersion: 6
@ -216,6 +191,31 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-3541330898277682399
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: TakeDamage
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -4719989283223396458}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-3262334696151519221
AnimatorState:
serializedVersion: 6
@ -237,7 +237,7 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 2eff314cde206bb4eb0a5715561aa6fe, type: 3}
m_Motion: {fileID: 7400000, guid: 3999b8e4563091241a545b63ca3639b8, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
@ -257,9 +257,9 @@ AnimatorStateTransition:
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionDuration: 0
m_TransitionOffset: 0
m_ExitTime: 0.625
m_ExitTime: 0
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
@ -286,7 +286,7 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: f4554a6188f8a9147954e4d6c388d287, type: 3}
m_Motion: {fileID: 7400000, guid: a623a26797d79474d92c3da42c99d470, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
@ -474,8 +474,7 @@ AnimatorStateMachine:
m_State: {fileID: -4719989283223396458}
m_Position: {x: 310, y: 10, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions:
- {fileID: -7488432702046877422}
m_AnyStateTransitions: []
m_EntryTransitions: []
m_StateMachineTransitions: {}
m_StateMachineBehaviours: []
@ -634,6 +633,7 @@ AnimatorState:
m_Transitions:
- {fileID: 301483702199899037}
- {fileID: 7243255047482691604}
- {fileID: -3541330898277682399}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0

View File

@ -36178,21 +36178,35 @@ AnimationClip:
m_HasMotionFloatCurves: 0
m_Events:
- time: 0
functionName: StopMove
functionName: OnStoppedMove
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
intParameter: 1
messageOptions: 0
- time: 0
functionName: OnAttacking
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 1
messageOptions: 0
- time: 0.36666667
functionName: ShootArrow
functionName: OnShootArrow
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 1.5
functionName: StartMove
functionName: OnStoppedMove
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 1.5
functionName: OnAttacking
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0

View File

@ -37528,21 +37528,35 @@ AnimationClip:
m_HasMotionFloatCurves: 0
m_Events:
- time: 0
functionName: StopMove
functionName: OnStoppedMove
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
intParameter: 1
messageOptions: 0
- time: 0
functionName: OnAttacking
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 1
messageOptions: 0
- time: 0.4
functionName: ShootArrow
functionName: OnShootArrow
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 1.5
functionName: StartMove
functionName: OnStoppedMove
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 1.5
functionName: OnAttacking
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,8 @@
fileFormatVersion: 2
guid: a55ee4efaad27d948ba5f03fc6d7bc80
DefaultImporter:
guid: a623a26797d79474d92c3da42c99d470
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,8 @@
fileFormatVersion: 2
guid: ed9b95dc6ed6d0647ad7f1a8f305385d
DefaultImporter:
guid: 3999b8e4563091241a545b63ca3639b8
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,8 @@
fileFormatVersion: 2
guid: 4ff1f29eab234cf4490d9bb383892c44
DefaultImporter:
guid: 4efa1310402cc6546b855a22bedca9b1
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,8 @@
fileFormatVersion: 2
guid: 697b6e7dea1fde146b7e3e5cf3ed9e9f
DefaultImporter:
guid: 65944dbab9cf50a4093e88d8d4f21254
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e631e6ac42f3e1143844a2240ea8642a
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bd85d70e29baa894492ba2d7535af14e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 69f0aa5e93748024493d9bd7ffe5bc8c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e1de8a213ab85dd4e95261370bdc06f4
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 078b8f13a17171b49892ad10426d5af0
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: f9406a33814af9c47b352e77f079d798
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 9aacf6f3043624194bb6f6fe9a580786
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: f4227764308e84f89a765fbf315e2945
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 41e59f562b69648719f2424c438758f3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: b044a2387a61dac41bdf204adffdce9d
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: cd287c84e887ea24a8679e67aac7c074
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 5f3f53ee059b45a4d9a5b9fc75e8aea9
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: f211254f5bfad224ba88868f2c75432c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 4368c9be31b3c174dbfd80f2caf98889
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: f597f19f656ba56eae4f6a3a7cc528f4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 48e08dc33330d11e9d4a1b246c52e4f6
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: ed09910c0094cb27be8f3ca264680da3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: cc355dd4cf1e6173beaeb22c2858cbe1
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: