closed #27 AiView, AiStat, Unit, Card SO 추가
1.enum 변수들 NONE = 0 -> NONE = -1 변경 2.meleeWeapon -> closeWeapon 이름 변경 3.BaseCharacter(기본캐릭터) 조립형 프리팹 수정
This commit is contained in:
parent
8a54f64a2e
commit
6438ca89a0
File diff suppressed because it is too large
Load Diff
@ -12,21 +12,21 @@ namespace BlueWaterProject
|
||||
{
|
||||
public enum AttackerType
|
||||
{
|
||||
NONE,
|
||||
NONE = -1,
|
||||
OFFENSE,
|
||||
DEFENSE
|
||||
}
|
||||
|
||||
public enum OffenseType
|
||||
{
|
||||
NONE,
|
||||
NONE = -1,
|
||||
NORMAL,
|
||||
ONLY_HOUSE
|
||||
}
|
||||
|
||||
public enum DefenseType
|
||||
{
|
||||
NONE,
|
||||
NONE = -1,
|
||||
NORMAL,
|
||||
}
|
||||
|
||||
@ -74,7 +74,7 @@ namespace BlueWaterProject
|
||||
private CapsuleCollider myCollider;
|
||||
private CapsuleCollider hitBoxCollider;
|
||||
protected Transform weaponLocation;
|
||||
protected MeleeWeapon meleeWeapon;
|
||||
protected CloseWeapon closeWeapon;
|
||||
|
||||
private static readonly int SpeedHash = Animator.StringToHash("Speed");
|
||||
protected static readonly int AttackHash = Animator.StringToHash("Attack");
|
||||
@ -113,8 +113,8 @@ namespace BlueWaterProject
|
||||
|
||||
private void Start()
|
||||
{
|
||||
SetCurrentHp(AiStat.maxHp);
|
||||
SetMoveSpeed(AiStat.moveSpd);
|
||||
SetCurrentHp(AiStat.MaxHp);
|
||||
SetMoveSpeed(AiStat.MoveSpd);
|
||||
|
||||
switch (attackerType)
|
||||
{
|
||||
@ -155,7 +155,7 @@ namespace BlueWaterProject
|
||||
|
||||
if (mouseEnterUnitController == unitSelection.SelectedUnitController) return;
|
||||
|
||||
foreach (var soldier in mouseEnterUnitController.unit.soldierList)
|
||||
foreach (var soldier in mouseEnterUnitController.unit.UnitList)
|
||||
{
|
||||
soldier.MouseEnterHighlight();
|
||||
}
|
||||
@ -165,7 +165,7 @@ namespace BlueWaterProject
|
||||
{
|
||||
if (!mouseEnterUnitController || mouseEnterUnitController == unitSelection.SelectedUnitController) return;
|
||||
|
||||
foreach (var soldier in mouseEnterUnitController.unit.soldierList)
|
||||
foreach (var soldier in mouseEnterUnitController.unit.UnitList)
|
||||
{
|
||||
soldier.ResetHighlight();
|
||||
}
|
||||
@ -183,8 +183,8 @@ namespace BlueWaterProject
|
||||
[field: Title("AiStat")]
|
||||
[field: SerializeField] public AiStat AiStat { get; set; } = new();
|
||||
|
||||
public float GetCurrentHp() => AiStat.currentHp;
|
||||
public void SetCurrentHp(float value) => AiStat.currentHp = value;
|
||||
public float GetCurrentHp() => AiStat.CurrentHp;
|
||||
public void SetCurrentHp(float value) => AiStat.CurrentHp = value;
|
||||
|
||||
public void TakeDamage(AiStat attacker, AiStat defender, Vector3? attackPos = null)
|
||||
{
|
||||
@ -194,7 +194,7 @@ namespace BlueWaterProject
|
||||
}
|
||||
|
||||
// 회피 성공 체크
|
||||
if (Random.Range(0, 100) < defender.avoidanceRate)
|
||||
if (Random.Range(0, 100) < defender.AvoidanceRate)
|
||||
{
|
||||
// TODO : 회피 처리
|
||||
return;
|
||||
@ -208,7 +208,7 @@ namespace BlueWaterProject
|
||||
aiAnimator.SetTrigger(ShieldHash);
|
||||
return;
|
||||
}
|
||||
var changeHp = Mathf.Max(defender.currentHp - finalDamage, 0);
|
||||
var changeHp = Mathf.Max(defender.CurrentHp - finalDamage, 0);
|
||||
SetCurrentHp(changeHp);
|
||||
|
||||
// 죽었는지 체크
|
||||
@ -438,7 +438,7 @@ namespace BlueWaterProject
|
||||
case MoveType.FIXED:
|
||||
break;
|
||||
case MoveType.MOVE:
|
||||
if (Vector3.Distance(transform.position, attackPos) > AiStat.atkRange)
|
||||
if (Vector3.Distance(transform.position, attackPos) > AiStat.AtkRange)
|
||||
{
|
||||
myUnitController.MoveCommand(attackPos);
|
||||
}
|
||||
@ -477,8 +477,8 @@ namespace BlueWaterProject
|
||||
}
|
||||
|
||||
isAttacking = true;
|
||||
meleeWeapon.SetIsAttacked(false);
|
||||
meleeWeapon.SetAttackerStat(AiStat);
|
||||
closeWeapon.SetIsAttacked(false);
|
||||
closeWeapon.SetAttackerStat(AiStat);
|
||||
aiAnimator.SetTrigger(AttackHash);
|
||||
|
||||
while (isAttacking)
|
||||
@ -486,7 +486,7 @@ namespace BlueWaterProject
|
||||
yield return null;
|
||||
}
|
||||
|
||||
yield return new WaitForSeconds(AiStat.atkCooldown);
|
||||
yield return new WaitForSeconds(AiStat.AtkCooldown);
|
||||
}
|
||||
}
|
||||
|
||||
@ -495,7 +495,7 @@ namespace BlueWaterProject
|
||||
if (!TargetTransform || !IslandInfo.TargetAllList.Contains(TargetTransform)) return false;
|
||||
|
||||
var targetInAttackRange = Vector3.Distance(transform.position, TargetTransform.position) <=
|
||||
AiStat.atkRange;
|
||||
AiStat.AtkRange;
|
||||
|
||||
if (targetInAttackRange)
|
||||
{
|
||||
|
@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
@ -9,38 +8,116 @@ namespace BlueWaterProject
|
||||
[Serializable]
|
||||
public class AiStat
|
||||
{
|
||||
[Tooltip("캐릭터 최대 체력")]
|
||||
public float maxHp;
|
||||
|
||||
[Tooltip("캐릭터 현재 체력")]
|
||||
public float currentHp;
|
||||
|
||||
[Tooltip("공격력")]
|
||||
public float atk;
|
||||
|
||||
[Tooltip("방어력")]
|
||||
public float def;
|
||||
|
||||
[Tooltip("이동속도")]
|
||||
public float moveSpd;
|
||||
|
||||
[Tooltip("공격속도(다음 공격 주기)")]
|
||||
public float atkCooldown;
|
||||
|
||||
[Tooltip("공격 사거리")]
|
||||
public float atkRange;
|
||||
#region Property and variable
|
||||
|
||||
[Tooltip("방패 캐릭터를 공격했을 때, 방패 관통률")]
|
||||
[Range(0, 100)] public int shieldPenetrationRate;
|
||||
[field: Tooltip("고유 인덱스")]
|
||||
[field: SerializeField] public string Idx { get; set; }
|
||||
|
||||
[field: Tooltip("캐릭터 모델 인덱스")]
|
||||
[field: SerializeField] public string ViewIdx { get; set; }
|
||||
|
||||
[field: Tooltip("캐릭터 최대 체력")]
|
||||
[field: SerializeField] public float MaxHp { get; set; }
|
||||
|
||||
[field: Tooltip("캐릭터 현재 체력")]
|
||||
[field: SerializeField] public float CurrentHp { get; set; }
|
||||
|
||||
[field: Tooltip("공격력")]
|
||||
[field: SerializeField] public float Atk { get; set; }
|
||||
|
||||
[field: Tooltip("방어력")]
|
||||
[field: SerializeField] public float Def { get; set; }
|
||||
|
||||
[field: Tooltip("이동속도")]
|
||||
[field: SerializeField] public float MoveSpd { get; set; }
|
||||
|
||||
[field: Tooltip("공격속도(다음 공격 주기)")]
|
||||
[field: SerializeField] public float AtkCooldown { get; set; }
|
||||
|
||||
[field: Tooltip("공격 사거리")]
|
||||
[field: SerializeField] public float AtkRange { get; set; }
|
||||
|
||||
[Tooltip("공격을 피할 수 있는 회피율")]
|
||||
[Range(0, 100)] public int avoidanceRate;
|
||||
[field: Tooltip("방패 캐릭터를 공격했을 때, 방패 관통률")]
|
||||
[field: Range(0, 100)]
|
||||
[field: SerializeField] public int ShieldPenetrationRate { get; set; }
|
||||
|
||||
[field: Tooltip("공격을 피할 수 있는 회피율")]
|
||||
[field: Range(0, 100)]
|
||||
[field: SerializeField] public int AvoidanceRate { get; set; }
|
||||
|
||||
[Tooltip("캐릭터의 방패 사용 유무")]
|
||||
public bool usingShield;
|
||||
[field: Tooltip("캐릭터의 방패 사용 유무")]
|
||||
[field: SerializeField] public bool UsingShield { get; set; }
|
||||
|
||||
[ShowIf("@usingShield == true")]
|
||||
[Tooltip("방패 캐릭터가 관통 당할 확률을 줄여주는 관통 저항률")]
|
||||
[Range(0, 100)] public int penetrationResistivity;
|
||||
[field: Tooltip("방패 캐릭터가 관통 당할 확률을 줄여주는 관통 저항률")]
|
||||
[field: ShowIf("@UsingShield == true")]
|
||||
[field: Range(0, 100)]
|
||||
[field: SerializeField] public int PenetrationResistivity { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructor
|
||||
|
||||
/// <summary>
|
||||
/// 기본 생성자
|
||||
/// </summary>
|
||||
public AiStat()
|
||||
{
|
||||
Idx = null;
|
||||
ViewIdx = null;
|
||||
MaxHp = 0f;
|
||||
CurrentHp = 0f;
|
||||
Atk = 0f;
|
||||
Def = 0f;
|
||||
MoveSpd = 0f;
|
||||
AtkCooldown = 0f;
|
||||
AtkRange = 0f;
|
||||
ShieldPenetrationRate = 0;
|
||||
AvoidanceRate = 0;
|
||||
UsingShield = false;
|
||||
PenetrationResistivity = 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 일반 생성자
|
||||
/// </summary>
|
||||
public AiStat(string idx, string viewIdx, float maxHp, float currentHp, float atk, float def, float moveSpd,
|
||||
float atkCooldown, float atkRange, int shieldPenetrationRate, int avoidanceRate, bool usingShield, int penetrationResistivity)
|
||||
{
|
||||
Idx = idx;
|
||||
ViewIdx = viewIdx;
|
||||
MaxHp = maxHp;
|
||||
CurrentHp = currentHp;
|
||||
Atk = atk;
|
||||
Def = def;
|
||||
MoveSpd = moveSpd;
|
||||
AtkCooldown = atkCooldown;
|
||||
AtkRange = atkRange;
|
||||
ShieldPenetrationRate = shieldPenetrationRate;
|
||||
AvoidanceRate = avoidanceRate;
|
||||
UsingShield = usingShield;
|
||||
PenetrationResistivity = penetrationResistivity;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 복사 생성자
|
||||
/// </summary>
|
||||
public AiStat(AiStat aiStat)
|
||||
{
|
||||
Idx = aiStat.Idx;
|
||||
ViewIdx = aiStat.ViewIdx;
|
||||
MaxHp = aiStat.MaxHp;
|
||||
CurrentHp = aiStat.CurrentHp;
|
||||
Atk = aiStat.Atk;
|
||||
Def = aiStat.Def;
|
||||
MoveSpd = aiStat.MoveSpd;
|
||||
AtkCooldown = aiStat.AtkCooldown;
|
||||
AtkRange = aiStat.AtkRange;
|
||||
ShieldPenetrationRate = aiStat.ShieldPenetrationRate;
|
||||
AvoidanceRate = aiStat.AvoidanceRate;
|
||||
UsingShield = aiStat.UsingShield;
|
||||
PenetrationResistivity = aiStat.PenetrationResistivity;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
88
BlueWater/Assets/02.Scripts/Ai/AiView.cs
Normal file
88
BlueWater/Assets/02.Scripts/Ai/AiView.cs
Normal file
@ -0,0 +1,88 @@
|
||||
using System;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[Serializable]
|
||||
public class AiView
|
||||
{
|
||||
#region Property and variable
|
||||
|
||||
[field: Tooltip("고유 인덱스")]
|
||||
[field: SerializeField] public string Idx { get; set; }
|
||||
|
||||
[field: Tooltip("등에 메고 다닐 모델\n화살통 등")]
|
||||
[field: SerializeField] public int BackPack { get; set; }
|
||||
|
||||
[field: Tooltip("왼손 무기 모델\n활, 스태프 등")]
|
||||
[field: SerializeField] public int LeftWeapon { get; set; }
|
||||
|
||||
[field: Tooltip("왼손 방패 모델")]
|
||||
[field: SerializeField] public int LeftShield { get; set; }
|
||||
|
||||
[field: Tooltip("머리 전체 모델")]
|
||||
[field: SerializeField] public int Head { get; set; }
|
||||
|
||||
[field: Tooltip("오른손 무기 모델\n왼손 무기를 제외한 무기 등")]
|
||||
[field: SerializeField] public int RightWeapon { get; set; }
|
||||
|
||||
[field: Tooltip("몸통 및 팔, 다리 전체 모델")]
|
||||
[field: SerializeField] public int Body { get; set; }
|
||||
|
||||
[field: Tooltip("부대 깃발 모델")]
|
||||
[field: SerializeField] public int Flag { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructor
|
||||
|
||||
/// <summary>
|
||||
/// 기본 생성자
|
||||
/// </summary>
|
||||
public AiView()
|
||||
{
|
||||
Idx = null;
|
||||
BackPack = -1;
|
||||
LeftWeapon = -1;
|
||||
LeftShield = -1;
|
||||
Head = -1;
|
||||
RightWeapon = -1;
|
||||
Body = -1;
|
||||
Flag = -1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 일반 생성자
|
||||
/// </summary>
|
||||
public AiView(string idx, int backPack, int leftWeapon, int leftShield, int head, int rightWeapon, int body, int flag)
|
||||
{
|
||||
Idx = idx;
|
||||
BackPack = backPack;
|
||||
LeftWeapon = leftWeapon;
|
||||
LeftShield = leftShield;
|
||||
Head = head;
|
||||
RightWeapon = rightWeapon;
|
||||
Body = body;
|
||||
Flag = flag;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 복사 생성자
|
||||
/// </summary>
|
||||
public AiView(AiView aiView)
|
||||
{
|
||||
Idx = aiView.Idx;
|
||||
BackPack = aiView.BackPack;
|
||||
LeftWeapon = aiView.LeftWeapon;
|
||||
LeftShield = aiView.LeftShield;
|
||||
Head = aiView.Head;
|
||||
RightWeapon = aiView.RightWeapon;
|
||||
Body = aiView.Body;
|
||||
Flag = aiView.Flag;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
11
BlueWater/Assets/02.Scripts/Ai/AiView.cs.meta
Normal file
11
BlueWater/Assets/02.Scripts/Ai/AiView.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 594e11827de1c1b4c8f08e75516453f1
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -49,7 +49,7 @@ namespace BlueWaterProject
|
||||
var targetPos = TargetTransform.position;
|
||||
var direction = ((targetPos + rayOffset) - (myPos + rayOffset)).normalized;
|
||||
|
||||
Debug.DrawRay(myPos + rayOffset, direction * AiStat.atkRange, Color.red);
|
||||
Debug.DrawRay(myPos + rayOffset, direction * AiStat.AtkRange, Color.red);
|
||||
}
|
||||
|
||||
protected override void Awake()
|
||||
@ -95,8 +95,8 @@ namespace BlueWaterProject
|
||||
var targetPos = TargetTransform.position;
|
||||
var direction = ((targetPos + rayOffset) - (myPos + rayOffset)).normalized;
|
||||
|
||||
var targetInAttackRange = Vector3.Distance(myPos, targetPos) <= AiStat.atkRange;
|
||||
var raycastHitTarget = Physics.Raycast(myPos + rayOffset, direction, out var hit, AiStat.atkRange, archerLayer, QueryTriggerInteraction.Collide);
|
||||
var targetInAttackRange = Vector3.Distance(myPos, targetPos) <= AiStat.AtkRange;
|
||||
var raycastHitTarget = Physics.Raycast(myPos + rayOffset, direction, out var hit, AiStat.AtkRange, archerLayer, QueryTriggerInteraction.Collide);
|
||||
|
||||
return targetInAttackRange && raycastHitTarget;
|
||||
}
|
||||
@ -120,7 +120,7 @@ namespace BlueWaterProject
|
||||
yield return null;
|
||||
}
|
||||
|
||||
yield return new WaitForSeconds(AiStat.atkCooldown);
|
||||
yield return new WaitForSeconds(AiStat.AtkCooldown);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -16,10 +16,10 @@ namespace BlueWaterProject
|
||||
{
|
||||
if (!weapon.gameObject.activeSelf) continue;
|
||||
|
||||
meleeWeapon = weapon.GetComponent<MeleeWeapon>();
|
||||
closeWeapon = weapon.GetComponent<CloseWeapon>();
|
||||
break;
|
||||
}
|
||||
meleeWeapon.SetAttackerType(attackerType);
|
||||
closeWeapon.SetAttackerType(attackerType);
|
||||
}
|
||||
}
|
||||
}
|
@ -16,10 +16,10 @@ namespace BlueWaterProject
|
||||
{
|
||||
if (!weapon.gameObject.activeSelf) continue;
|
||||
|
||||
meleeWeapon = weapon.GetComponent<MeleeWeapon>();
|
||||
closeWeapon = weapon.GetComponent<CloseWeapon>();
|
||||
break;
|
||||
}
|
||||
meleeWeapon.SetAttackerType(attackerType);
|
||||
closeWeapon.SetAttackerType(attackerType);
|
||||
}
|
||||
}
|
||||
}
|
@ -16,10 +16,10 @@ namespace BlueWaterProject
|
||||
{
|
||||
if (!weapon.gameObject.activeSelf) continue;
|
||||
|
||||
meleeWeapon = weapon.GetComponent<MeleeWeapon>();
|
||||
closeWeapon = weapon.GetComponent<CloseWeapon>();
|
||||
break;
|
||||
}
|
||||
meleeWeapon.SetAttackerType(attackerType);
|
||||
closeWeapon.SetAttackerType(attackerType);
|
||||
}
|
||||
}
|
||||
}
|
@ -16,10 +16,10 @@ namespace BlueWaterProject
|
||||
{
|
||||
if (!weapon.gameObject.activeSelf) continue;
|
||||
|
||||
meleeWeapon = weapon.GetComponent<MeleeWeapon>();
|
||||
closeWeapon = weapon.GetComponent<CloseWeapon>();
|
||||
break;
|
||||
}
|
||||
meleeWeapon.SetAttackerType(attackerType);
|
||||
closeWeapon.SetAttackerType(attackerType);
|
||||
}
|
||||
}
|
||||
}
|
@ -16,10 +16,10 @@ namespace BlueWaterProject
|
||||
{
|
||||
if (!weapon.gameObject.activeSelf) continue;
|
||||
|
||||
meleeWeapon = weapon.GetComponent<MeleeWeapon>();
|
||||
closeWeapon = weapon.GetComponent<CloseWeapon>();
|
||||
break;
|
||||
}
|
||||
meleeWeapon.SetAttackerType(attackerType);
|
||||
closeWeapon.SetAttackerType(attackerType);
|
||||
}
|
||||
}
|
||||
}
|
@ -9,47 +9,93 @@ namespace BlueWaterProject
|
||||
[Serializable]
|
||||
public class Unit
|
||||
{
|
||||
[field: Tooltip("부대의 이름 또는 영웅의 이름")]
|
||||
#region Property and variable
|
||||
|
||||
[field: Tooltip("고유 인덱스")]
|
||||
[field: SerializeField] public string Idx { get; set; }
|
||||
|
||||
[field: Tooltip("선장의 인덱스")]
|
||||
[field: SerializeField] public string CaptainStatIdx { get; set; }
|
||||
|
||||
[field: Tooltip("선원의 인덱스")]
|
||||
[field: SerializeField] public string SailorStatIdx { get; set; }
|
||||
|
||||
[field: Tooltip("부대의 이름 또는 선장의 이름")]
|
||||
[field: SerializeField] public string UnitName { get; set; }
|
||||
|
||||
[field: Tooltip("부대의 종류")]
|
||||
[field: OnValueChanged("AttackerTypeAutoSetting")]
|
||||
[field: SerializeField] public GlobalValue.UnitType UnitType { get; set; }
|
||||
|
||||
[field: Tooltip("부대의 병력 수")]
|
||||
[field: SerializeField] public int SoliderCount { get; set; }
|
||||
[field: Tooltip("선원의 수")]
|
||||
[field: Range(0, GlobalValue.ONE_UNIT_CAPACITY - 1)]
|
||||
[field: SerializeField] public int SailorCount { get; set; }
|
||||
|
||||
[field: Tooltip("공격 타입 UnitType에 맞게 자동 설정")]
|
||||
[field: DisableInEditorMode]
|
||||
[field: EnumToggleButtons]
|
||||
[field: SerializeField] public AttackerType AttackerType { get; set; }
|
||||
|
||||
[field: ShowIf("AttackerType", AttackerType.OFFENSE)]
|
||||
//[field: ShowIf("AttackerType", AttackerType.OFFENSE)]
|
||||
[field: SerializeField] public OffenseType OffenseType { get; set; }
|
||||
|
||||
[field: ShowIf("AttackerType", AttackerType.DEFENSE)]
|
||||
//[field: ShowIf("AttackerType", AttackerType.DEFENSE)]
|
||||
[field: SerializeField] public DefenseType DefenseType { get; set; }
|
||||
|
||||
[field: Tooltip("부대 병력 리스트")]
|
||||
public List<AiController> soldierList;
|
||||
public List<AiController> UnitList { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructor
|
||||
|
||||
public Unit()
|
||||
{
|
||||
Idx = null;
|
||||
CaptainStatIdx = null;
|
||||
SailorStatIdx = null;
|
||||
UnitName = null;
|
||||
UnitType = GlobalValue.UnitType.NONE;
|
||||
SoliderCount = 0;
|
||||
soldierList = new List<AiController>();
|
||||
SailorCount = 0;
|
||||
AttackerType = AttackerType.NONE;
|
||||
OffenseType = OffenseType.NONE;
|
||||
DefenseType = DefenseType.NONE;
|
||||
UnitList = new List<AiController>(GlobalValue.ONE_UNIT_CAPACITY);
|
||||
}
|
||||
|
||||
public Unit(string idx, string captainIdx, string sailorIdx, string unitName, GlobalValue.UnitType unitType,
|
||||
int sailorCount, AttackerType attackerType, OffenseType offenseType, DefenseType defenseType, List<AiController> unitList)
|
||||
{
|
||||
Idx = idx;
|
||||
CaptainStatIdx = captainIdx;
|
||||
SailorStatIdx = sailorIdx;
|
||||
UnitName = unitName;
|
||||
UnitType = unitType;
|
||||
SailorCount = sailorCount;
|
||||
AttackerType = attackerType;
|
||||
OffenseType = offenseType;
|
||||
DefenseType = defenseType;
|
||||
UnitList = unitList;
|
||||
}
|
||||
|
||||
public Unit(string unitName, GlobalValue.UnitType unitType, int soliderCount, List<AiController> soldierList)
|
||||
public Unit(Unit unit)
|
||||
{
|
||||
this.UnitName = unitName;
|
||||
this.UnitType = unitType;
|
||||
this.SoliderCount = soliderCount;
|
||||
|
||||
this.soldierList = new List<AiController>(this.SoliderCount);
|
||||
this.soldierList = soldierList;
|
||||
Idx = unit.Idx;
|
||||
CaptainStatIdx = unit.CaptainStatIdx;
|
||||
SailorStatIdx = unit.SailorStatIdx;
|
||||
UnitName = unit.UnitName;
|
||||
UnitType = unit.UnitType;
|
||||
SailorCount = unit.SailorCount;
|
||||
AttackerType = unit.AttackerType;
|
||||
OffenseType = unit.OffenseType;
|
||||
DefenseType = unit.DefenseType;
|
||||
UnitList = unit.UnitList;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Custrom method
|
||||
|
||||
public void AttackerTypeAutoSetting()
|
||||
{
|
||||
if (UnitType.ToString().Contains("_E"))
|
||||
@ -69,5 +115,8 @@ namespace BlueWaterProject
|
||||
public void SetAttackerType(AttackerType type) => AttackerType = type;
|
||||
public void SetOffenseType(OffenseType type) => OffenseType = type;
|
||||
public void SetDefenseType(DefenseType type) => DefenseType = type;
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
@ -25,13 +25,13 @@ namespace BlueWaterProject
|
||||
|
||||
private void OnDrawGizmosSelected()
|
||||
{
|
||||
if (unit == null || unit.SoliderCount <= 0) return;
|
||||
if (unit == null || unit.SailorCount <= 0) return;
|
||||
|
||||
var unitManager = UnitManager.Inst != null ? UnitManager.Inst : FindObjectOfType<UnitManager>();
|
||||
var matrix = unitManager.UnitMatrices.Find(um => um.soldiers == unit.SoliderCount);
|
||||
var matrix = unitManager.UnitMatrices.Find(um => um.soldiers == unit.SailorCount);
|
||||
if (matrix == null) return;
|
||||
|
||||
for (var i = 0; i < unit.SoliderCount; i++)
|
||||
for (var i = 0; i < unit.SailorCount; i++)
|
||||
{
|
||||
var row = i / matrix.columns;
|
||||
var column = i % matrix.columns;
|
||||
@ -111,7 +111,7 @@ namespace BlueWaterProject
|
||||
[Button("타입 모두 적용")]
|
||||
private void SetTypeAll()
|
||||
{
|
||||
foreach (var soldier in unit.soldierList)
|
||||
foreach (var soldier in unit.UnitList)
|
||||
{
|
||||
soldier.SetAttackerType(unit.AttackerType);
|
||||
soldier.SetOffenseType(unit.OffenseType);
|
||||
@ -123,7 +123,7 @@ namespace BlueWaterProject
|
||||
|
||||
public void MoveCommand(Vector3 targetPos)
|
||||
{
|
||||
foreach (var soldier in unit.soldierList)
|
||||
foreach (var soldier in unit.UnitList)
|
||||
{
|
||||
soldier.MoveTarget(targetPos);
|
||||
}
|
||||
@ -136,7 +136,7 @@ namespace BlueWaterProject
|
||||
var islandInfo = FindObjectOfType<IslandInfo>();
|
||||
attackIslandInfo = islandInfo;
|
||||
|
||||
foreach (var soldier in unit.soldierList)
|
||||
foreach (var soldier in unit.UnitList)
|
||||
{
|
||||
soldier.IslandInfo = attackIslandInfo;
|
||||
}
|
||||
@ -166,10 +166,10 @@ namespace BlueWaterProject
|
||||
|
||||
return true;
|
||||
}
|
||||
private Color GetCreateUnitButtonColor() => unit.soldierList.Count > 0 ? Color.white : Color.green;
|
||||
private Color GetCreateUnitButtonColor() => unit.UnitList.Count > 0 ? Color.white : Color.green;
|
||||
private Color GetAttackerTypeButtonColor()
|
||||
{
|
||||
if (unit.soldierList.Count > 0)
|
||||
if (unit.UnitList.Count > 0)
|
||||
{
|
||||
return unit.AttackerType == AttackerType.NONE ? Color.green : Color.white;
|
||||
}
|
||||
|
@ -161,7 +161,7 @@ namespace BlueWaterProject
|
||||
{
|
||||
DestroyDeployedSoldiers(unitController);
|
||||
|
||||
var baseName = soldierPrefabList[(int)unitController.unit.UnitType - 1].name;
|
||||
var baseName = soldierPrefabList[(int)unitController.unit.UnitType].name;
|
||||
|
||||
if (string.IsNullOrEmpty(unitController.unit.UnitName))
|
||||
{
|
||||
@ -189,9 +189,9 @@ namespace BlueWaterProject
|
||||
}
|
||||
|
||||
unitController.gameObject.layer = LayerMask.NameToLayer("Unit");
|
||||
unitController.unit.soldierList = new List<AiController>(unitController.unit.SoliderCount);
|
||||
unitController.unit.UnitList = new List<AiController>(unitController.unit.SailorCount);
|
||||
|
||||
var matrix = UnitMatrices.Find(um => um.soldiers == unitController.unit.SoliderCount);
|
||||
var matrix = UnitMatrices.Find(um => um.soldiers == unitController.unit.SailorCount);
|
||||
if (matrix == null)
|
||||
{
|
||||
Debug.LogError("사용할 수 없는 병력의 숫자입니다. UnitManager의 UnitMatrices를 확인해주세요.");
|
||||
@ -202,7 +202,7 @@ namespace BlueWaterProject
|
||||
var unitControllerRotation = unitControllerTransform.rotation;
|
||||
unitControllerTransform.rotation = Quaternion.identity;
|
||||
|
||||
for (var i = 0; i < unitController.unit.SoliderCount; i++)
|
||||
for (var i = 0; i < unitController.unit.SailorCount; i++)
|
||||
{
|
||||
var row = i / matrix.columns;
|
||||
var column = i % matrix.columns;
|
||||
@ -211,13 +211,13 @@ namespace BlueWaterProject
|
||||
var zOffset = (row - (matrix.rows - 1) / 2.0f) * SoldierSpacing;
|
||||
var spawnPosition = unitControllerTransform.position + new Vector3(xOffset, 0, zOffset);
|
||||
|
||||
var soldierObject = Instantiate(soldierPrefabList[(int)unitController.unit.UnitType - 1], spawnPosition,
|
||||
var soldierObject = Instantiate(soldierPrefabList[(int)unitController.unit.UnitType], spawnPosition,
|
||||
Quaternion.identity, unitController.transform).GetComponent<AiController>();
|
||||
|
||||
var newSoldierName = $"{baseName}_{i + 1:00}";
|
||||
|
||||
soldierObject.name = newSoldierName;
|
||||
unitController.unit.soldierList.Add(soldierObject);
|
||||
unitController.unit.UnitList.Add(soldierObject);
|
||||
soldierObject.gameObject.SetActive(false);
|
||||
}
|
||||
unitController.transform.rotation *= unitControllerRotation;
|
||||
@ -225,7 +225,7 @@ namespace BlueWaterProject
|
||||
if (unitController.unit.UnitType.ToString().Contains("_E"))
|
||||
{
|
||||
unitController.SetAttackerType(AttackerType.DEFENSE);
|
||||
foreach (var soldier in unitController.unit.soldierList)
|
||||
foreach (var soldier in unitController.unit.UnitList)
|
||||
{
|
||||
soldier.SetAttackerType(AttackerType.DEFENSE);
|
||||
}
|
||||
@ -233,7 +233,7 @@ namespace BlueWaterProject
|
||||
else if (unitController.unit.UnitType.ToString().Contains("_P"))
|
||||
{
|
||||
unitController.SetAttackerType(AttackerType.OFFENSE);
|
||||
foreach (var soldier in unitController.unit.soldierList)
|
||||
foreach (var soldier in unitController.unit.UnitList)
|
||||
{
|
||||
soldier.SetAttackerType(AttackerType.DEFENSE);
|
||||
}
|
||||
@ -245,13 +245,13 @@ namespace BlueWaterProject
|
||||
/// </summary>
|
||||
public bool CanAssignUnit(UnitController unitController, Vector3 assignPos)
|
||||
{
|
||||
if (unitController.unit.soldierList.Count <= 0) return false;
|
||||
if (unitController.unit.UnitList.Count <= 0) return false;
|
||||
|
||||
unitController.transform.position = assignPos;
|
||||
|
||||
for (var i = 0; i < unitController.unit.SoliderCount; i++)
|
||||
for (var i = 0; i < unitController.unit.SailorCount; i++)
|
||||
{
|
||||
var soldierPos = unitController.unit.soldierList[i].transform.position;
|
||||
var soldierPos = unitController.unit.UnitList[i].transform.position;
|
||||
var ray = new Ray(soldierPos, Vector3.down);
|
||||
if (Physics.Raycast(ray, out var hit, MaxGroundDistance, GroundLayer))
|
||||
{
|
||||
@ -269,7 +269,7 @@ namespace BlueWaterProject
|
||||
public void AssignUnit(UnitController unitController, Vector3 assignPos)
|
||||
{
|
||||
unitController.transform.position = assignPos;
|
||||
foreach (var item in unitController.unit.soldierList)
|
||||
foreach (var item in unitController.unit.UnitList)
|
||||
{
|
||||
item.gameObject.SetActive(true);
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ namespace BlueWaterProject
|
||||
// 선택된 부대가 없었을 때,
|
||||
if (SelectedUnitController == null)
|
||||
{
|
||||
foreach (var soldier in unitController.unit.soldierList)
|
||||
foreach (var soldier in unitController.unit.UnitList)
|
||||
{
|
||||
soldier.SelectedHighlight();
|
||||
}
|
||||
@ -73,7 +73,7 @@ namespace BlueWaterProject
|
||||
// 선택된 부대가 이미 선택된 부대일 때,
|
||||
else if (SelectedUnitController == unitController)
|
||||
{
|
||||
foreach (var soldier in SelectedUnitController.unit.soldierList)
|
||||
foreach (var soldier in SelectedUnitController.unit.UnitList)
|
||||
{
|
||||
soldier.ResetHighlight();
|
||||
}
|
||||
@ -84,12 +84,12 @@ namespace BlueWaterProject
|
||||
// 다른 부대가 선택될 때,
|
||||
else
|
||||
{
|
||||
foreach (var soldier in unitController.unit.soldierList)
|
||||
foreach (var soldier in unitController.unit.UnitList)
|
||||
{
|
||||
soldier.SelectedHighlight();
|
||||
}
|
||||
|
||||
foreach (var soldier in SelectedUnitController.unit.soldierList)
|
||||
foreach (var soldier in SelectedUnitController.unit.UnitList)
|
||||
{
|
||||
soldier.ResetHighlight();
|
||||
}
|
||||
@ -104,7 +104,7 @@ namespace BlueWaterProject
|
||||
if (SelectedUnitController == null) return;
|
||||
|
||||
// 선택된 부대가 있었을 때,
|
||||
foreach (var soldier in SelectedUnitController.unit.soldierList)
|
||||
foreach (var soldier in SelectedUnitController.unit.UnitList)
|
||||
{
|
||||
soldier.ResetHighlight();
|
||||
}
|
||||
@ -126,7 +126,7 @@ namespace BlueWaterProject
|
||||
SelectedUnitController.MoveCommand(targetPos);
|
||||
}
|
||||
|
||||
foreach (var soldier in SelectedUnitController.unit.soldierList)
|
||||
foreach (var soldier in SelectedUnitController.unit.UnitList)
|
||||
{
|
||||
soldier.ResetHighlight();
|
||||
}
|
||||
|
12
BlueWater/Assets/02.Scripts/Data/AiStatDataSo.cs
Normal file
12
BlueWater/Assets/02.Scripts/Data/AiStatDataSo.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[CreateAssetMenu(fileName = "AiStatDataSo", menuName = "ScriptableObjects/AiStatData", order = 1)]
|
||||
public class AiStatDataSo : ScriptableObject
|
||||
{
|
||||
public List<AiStat> aiStatDataList = new(GlobalValue.AI_STAT_DATA_CAPACITY);
|
||||
}
|
||||
}
|
11
BlueWater/Assets/02.Scripts/Data/AiStatDataSo.cs.meta
Normal file
11
BlueWater/Assets/02.Scripts/Data/AiStatDataSo.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0b73a9021577a154c991acd5616ad6d9
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
12
BlueWater/Assets/02.Scripts/Data/AiViewDataSo.cs
Normal file
12
BlueWater/Assets/02.Scripts/Data/AiViewDataSo.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[CreateAssetMenu(fileName = "AiViewDataSo", menuName = "ScriptableObjects/AiViewData", order = 0)]
|
||||
public class AiViewDataSo : ScriptableObject
|
||||
{
|
||||
public List<AiView> aiViewDataList = new(GlobalValue.AI_VIEW_DATA_CAPACITY);
|
||||
}
|
||||
}
|
11
BlueWater/Assets/02.Scripts/Data/AiViewDataSo.cs.meta
Normal file
11
BlueWater/Assets/02.Scripts/Data/AiViewDataSo.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c71fe8f0398eaea4e9a1bee5d4a92a64
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,4 +1,3 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using _02.Scripts.WaterAndShip;
|
||||
using UnityEngine;
|
||||
@ -6,7 +5,7 @@ using UnityEngine;
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[CreateAssetMenu(fileName = "CardDataSo", menuName = "ScriptableObjects/CardData", order = 0)]
|
||||
[CreateAssetMenu(fileName = "CardDataSo", menuName = "ScriptableObjects/CardData", order = 10)]
|
||||
public class CardDataSo : ScriptableObject
|
||||
{
|
||||
public List<Card> cardDataList = new(GlobalValue.CARD_DATA_CAPACITY);
|
||||
|
275
BlueWater/Assets/02.Scripts/Data/So/AiStatDataSo.asset
Normal file
275
BlueWater/Assets/02.Scripts/Data/So/AiStatDataSo.asset
Normal file
@ -0,0 +1,275 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 0b73a9021577a154c991acd5616ad6d9, type: 3}
|
||||
m_Name: AiStatDataSo
|
||||
m_EditorClassIdentifier:
|
||||
aiStatDataList:
|
||||
- <Idx>k__BackingField: ai_stat_sailor_e_001
|
||||
<ViewIdx>k__BackingField: ai_view_sailor_e_001
|
||||
<MaxHp>k__BackingField: 30
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 50
|
||||
<Def>k__BackingField: 0
|
||||
<MoveSpd>k__BackingField: 2.5
|
||||
<AtkCooldown>k__BackingField: 3
|
||||
<AtkRange>k__BackingField: 15
|
||||
<ShieldPenetrationRate>k__BackingField: 25
|
||||
<AvoidanceRate>k__BackingField: 20
|
||||
<UsingShield>k__BackingField: 0
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_sailor_e_002
|
||||
<ViewIdx>k__BackingField: ai_view_sailor_e_002
|
||||
<MaxHp>k__BackingField: 60
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 40
|
||||
<Def>k__BackingField: 10
|
||||
<MoveSpd>k__BackingField: 2
|
||||
<AtkCooldown>k__BackingField: 2
|
||||
<AtkRange>k__BackingField: 1.5
|
||||
<ShieldPenetrationRate>k__BackingField: 75
|
||||
<AvoidanceRate>k__BackingField: 10
|
||||
<UsingShield>k__BackingField: 1
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_sailor_e_003
|
||||
<ViewIdx>k__BackingField: ai_view_sailor_e_003
|
||||
<MaxHp>k__BackingField: 40
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 50
|
||||
<Def>k__BackingField: 5
|
||||
<MoveSpd>k__BackingField: 3
|
||||
<AtkCooldown>k__BackingField: 2
|
||||
<AtkRange>k__BackingField: 1.5
|
||||
<ShieldPenetrationRate>k__BackingField: 75
|
||||
<AvoidanceRate>k__BackingField: 20
|
||||
<UsingShield>k__BackingField: 0
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_sailor_e_004
|
||||
<ViewIdx>k__BackingField: ai_view_sailor_e_004
|
||||
<MaxHp>k__BackingField: 60
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 30
|
||||
<Def>k__BackingField: 10
|
||||
<MoveSpd>k__BackingField: 2.5
|
||||
<AtkCooldown>k__BackingField: 1.5
|
||||
<AtkRange>k__BackingField: 1
|
||||
<ShieldPenetrationRate>k__BackingField: 50
|
||||
<AvoidanceRate>k__BackingField: 10
|
||||
<UsingShield>k__BackingField: 1
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_sailor_e_005
|
||||
<ViewIdx>k__BackingField: ai_view_sailor_e_005
|
||||
<MaxHp>k__BackingField: 45
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 35
|
||||
<Def>k__BackingField: 5
|
||||
<MoveSpd>k__BackingField: 3.5
|
||||
<AtkCooldown>k__BackingField: 1.5
|
||||
<AtkRange>k__BackingField: 1
|
||||
<ShieldPenetrationRate>k__BackingField: 50
|
||||
<AvoidanceRate>k__BackingField: 30
|
||||
<UsingShield>k__BackingField: 0
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_sailor_p_001
|
||||
<ViewIdx>k__BackingField: ai_view_sailor_p_001
|
||||
<MaxHp>k__BackingField: 30
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 50
|
||||
<Def>k__BackingField: 0
|
||||
<MoveSpd>k__BackingField: 2.5
|
||||
<AtkCooldown>k__BackingField: 3
|
||||
<AtkRange>k__BackingField: 15
|
||||
<ShieldPenetrationRate>k__BackingField: 25
|
||||
<AvoidanceRate>k__BackingField: 20
|
||||
<UsingShield>k__BackingField: 0
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_sailor_p_002
|
||||
<ViewIdx>k__BackingField: ai_view_sailor_p_002
|
||||
<MaxHp>k__BackingField: 50
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 50
|
||||
<Def>k__BackingField: 0
|
||||
<MoveSpd>k__BackingField: 2.5
|
||||
<AtkCooldown>k__BackingField: 2.5
|
||||
<AtkRange>k__BackingField: 1.5
|
||||
<ShieldPenetrationRate>k__BackingField: 100
|
||||
<AvoidanceRate>k__BackingField: 10
|
||||
<UsingShield>k__BackingField: 0
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_sailor_p_003
|
||||
<ViewIdx>k__BackingField: ai_view_sailor_p_003
|
||||
<MaxHp>k__BackingField: 40
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 50
|
||||
<Def>k__BackingField: 5
|
||||
<MoveSpd>k__BackingField: 3
|
||||
<AtkCooldown>k__BackingField: 2
|
||||
<AtkRange>k__BackingField: 1.5
|
||||
<ShieldPenetrationRate>k__BackingField: 75
|
||||
<AvoidanceRate>k__BackingField: 20
|
||||
<UsingShield>k__BackingField: 0
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_sailor_p_004
|
||||
<ViewIdx>k__BackingField: ai_view_sailor_p_004
|
||||
<MaxHp>k__BackingField: 60
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 30
|
||||
<Def>k__BackingField: 10
|
||||
<MoveSpd>k__BackingField: 2.5
|
||||
<AtkCooldown>k__BackingField: 1.5
|
||||
<AtkRange>k__BackingField: 1
|
||||
<ShieldPenetrationRate>k__BackingField: 50
|
||||
<AvoidanceRate>k__BackingField: 10
|
||||
<UsingShield>k__BackingField: 1
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_sailor_p_005
|
||||
<ViewIdx>k__BackingField: ai_view_sailor_p_005
|
||||
<MaxHp>k__BackingField: 45
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 35
|
||||
<Def>k__BackingField: 5
|
||||
<MoveSpd>k__BackingField: 3.5
|
||||
<AtkCooldown>k__BackingField: 1.5
|
||||
<AtkRange>k__BackingField: 1
|
||||
<ShieldPenetrationRate>k__BackingField: 50
|
||||
<AvoidanceRate>k__BackingField: 30
|
||||
<UsingShield>k__BackingField: 0
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_captain_e_001
|
||||
<ViewIdx>k__BackingField: ai_view_captain_e_001
|
||||
<MaxHp>k__BackingField: 150
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 50
|
||||
<Def>k__BackingField: 0
|
||||
<MoveSpd>k__BackingField: 2.5
|
||||
<AtkCooldown>k__BackingField: 3
|
||||
<AtkRange>k__BackingField: 15
|
||||
<ShieldPenetrationRate>k__BackingField: 25
|
||||
<AvoidanceRate>k__BackingField: 20
|
||||
<UsingShield>k__BackingField: 0
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_captain_e_002
|
||||
<ViewIdx>k__BackingField: ai_view_captain_e_002
|
||||
<MaxHp>k__BackingField: 300
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 40
|
||||
<Def>k__BackingField: 10
|
||||
<MoveSpd>k__BackingField: 2
|
||||
<AtkCooldown>k__BackingField: 2
|
||||
<AtkRange>k__BackingField: 1.5
|
||||
<ShieldPenetrationRate>k__BackingField: 75
|
||||
<AvoidanceRate>k__BackingField: 10
|
||||
<UsingShield>k__BackingField: 1
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_captain_e_003
|
||||
<ViewIdx>k__BackingField: ai_view_captain_e_003
|
||||
<MaxHp>k__BackingField: 200
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 50
|
||||
<Def>k__BackingField: 5
|
||||
<MoveSpd>k__BackingField: 3
|
||||
<AtkCooldown>k__BackingField: 2
|
||||
<AtkRange>k__BackingField: 1.5
|
||||
<ShieldPenetrationRate>k__BackingField: 75
|
||||
<AvoidanceRate>k__BackingField: 20
|
||||
<UsingShield>k__BackingField: 0
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_captain_e_004
|
||||
<ViewIdx>k__BackingField: ai_view_captain_e_004
|
||||
<MaxHp>k__BackingField: 300
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 30
|
||||
<Def>k__BackingField: 10
|
||||
<MoveSpd>k__BackingField: 2.5
|
||||
<AtkCooldown>k__BackingField: 1.5
|
||||
<AtkRange>k__BackingField: 1
|
||||
<ShieldPenetrationRate>k__BackingField: 50
|
||||
<AvoidanceRate>k__BackingField: 10
|
||||
<UsingShield>k__BackingField: 1
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_captain_e_005
|
||||
<ViewIdx>k__BackingField: ai_view_captain_e_005
|
||||
<MaxHp>k__BackingField: 225
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 35
|
||||
<Def>k__BackingField: 5
|
||||
<MoveSpd>k__BackingField: 3.5
|
||||
<AtkCooldown>k__BackingField: 1.5
|
||||
<AtkRange>k__BackingField: 1
|
||||
<ShieldPenetrationRate>k__BackingField: 50
|
||||
<AvoidanceRate>k__BackingField: 30
|
||||
<UsingShield>k__BackingField: 0
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_captain_p_001
|
||||
<ViewIdx>k__BackingField: ai_view_captain_p_001
|
||||
<MaxHp>k__BackingField: 150
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 50
|
||||
<Def>k__BackingField: 0
|
||||
<MoveSpd>k__BackingField: 2.5
|
||||
<AtkCooldown>k__BackingField: 3
|
||||
<AtkRange>k__BackingField: 15
|
||||
<ShieldPenetrationRate>k__BackingField: 25
|
||||
<AvoidanceRate>k__BackingField: 20
|
||||
<UsingShield>k__BackingField: 0
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_captain_p_002
|
||||
<ViewIdx>k__BackingField: ai_view_captain_p_002
|
||||
<MaxHp>k__BackingField: 250
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 50
|
||||
<Def>k__BackingField: 0
|
||||
<MoveSpd>k__BackingField: 2.5
|
||||
<AtkCooldown>k__BackingField: 2.5
|
||||
<AtkRange>k__BackingField: 1.5
|
||||
<ShieldPenetrationRate>k__BackingField: 100
|
||||
<AvoidanceRate>k__BackingField: 10
|
||||
<UsingShield>k__BackingField: 0
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_captain_p_003
|
||||
<ViewIdx>k__BackingField: ai_view_captain_p_003
|
||||
<MaxHp>k__BackingField: 200
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 50
|
||||
<Def>k__BackingField: 5
|
||||
<MoveSpd>k__BackingField: 3
|
||||
<AtkCooldown>k__BackingField: 2
|
||||
<AtkRange>k__BackingField: 1.5
|
||||
<ShieldPenetrationRate>k__BackingField: 75
|
||||
<AvoidanceRate>k__BackingField: 20
|
||||
<UsingShield>k__BackingField: 0
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_captain_p_004
|
||||
<ViewIdx>k__BackingField: ai_view_captain_p_004
|
||||
<MaxHp>k__BackingField: 300
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 30
|
||||
<Def>k__BackingField: 10
|
||||
<MoveSpd>k__BackingField: 2.5
|
||||
<AtkCooldown>k__BackingField: 1.5
|
||||
<AtkRange>k__BackingField: 1
|
||||
<ShieldPenetrationRate>k__BackingField: 50
|
||||
<AvoidanceRate>k__BackingField: 10
|
||||
<UsingShield>k__BackingField: 1
|
||||
<PenetrationResistivity>k__BackingField: 0
|
||||
- <Idx>k__BackingField: ai_stat_captain_p_005
|
||||
<ViewIdx>k__BackingField: ai_view_captain_p_005
|
||||
<MaxHp>k__BackingField: 225
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Atk>k__BackingField: 35
|
||||
<Def>k__BackingField: 5
|
||||
<MoveSpd>k__BackingField: 3.5
|
||||
<AtkCooldown>k__BackingField: 1.5
|
||||
<AtkRange>k__BackingField: 1
|
||||
<ShieldPenetrationRate>k__BackingField: 50
|
||||
<AvoidanceRate>k__BackingField: 30
|
||||
<UsingShield>k__BackingField: 0
|
||||
<PenetrationResistivity>k__BackingField: 0
|
@ -1,7 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4ff1f29eab234cf4490d9bb383892c44
|
||||
DefaultImporter:
|
||||
guid: 45c7e0b53956de746a37c2e34cb2eb14
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
175
BlueWater/Assets/02.Scripts/Data/So/AiViewDataSo.asset
Normal file
175
BlueWater/Assets/02.Scripts/Data/So/AiViewDataSo.asset
Normal file
@ -0,0 +1,175 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c71fe8f0398eaea4e9a1bee5d4a92a64, type: 3}
|
||||
m_Name: AiViewDataSo
|
||||
m_EditorClassIdentifier:
|
||||
aiViewDataList:
|
||||
- <Idx>k__BackingField: ai_view_sailor_e_001
|
||||
<BackPack>k__BackingField: 1
|
||||
<LeftWeapon>k__BackingField: 2
|
||||
<LeftShield>k__BackingField: -1
|
||||
<Head>k__BackingField: 16
|
||||
<RightWeapon>k__BackingField: -1
|
||||
<Body>k__BackingField: 11
|
||||
<Flag>k__BackingField: -1
|
||||
- <Idx>k__BackingField: ai_view_sailor_e_002
|
||||
<BackPack>k__BackingField: -1
|
||||
<LeftWeapon>k__BackingField: -1
|
||||
<LeftShield>k__BackingField: 1
|
||||
<Head>k__BackingField: 46
|
||||
<RightWeapon>k__BackingField: 27
|
||||
<Body>k__BackingField: 18
|
||||
<Flag>k__BackingField: -1
|
||||
- <Idx>k__BackingField: ai_view_sailor_e_003
|
||||
<BackPack>k__BackingField: -1
|
||||
<LeftWeapon>k__BackingField: -1
|
||||
<LeftShield>k__BackingField: -1
|
||||
<Head>k__BackingField: 35
|
||||
<RightWeapon>k__BackingField: 27
|
||||
<Body>k__BackingField: 17
|
||||
<Flag>k__BackingField: -1
|
||||
- <Idx>k__BackingField: ai_view_sailor_e_004
|
||||
<BackPack>k__BackingField: -1
|
||||
<LeftWeapon>k__BackingField: -1
|
||||
<LeftShield>k__BackingField: 9
|
||||
<Head>k__BackingField: 33
|
||||
<RightWeapon>k__BackingField: 6
|
||||
<Body>k__BackingField: 39
|
||||
<Flag>k__BackingField: -1
|
||||
- <Idx>k__BackingField: ai_view_sailor_e_005
|
||||
<BackPack>k__BackingField: -1
|
||||
<LeftWeapon>k__BackingField: -1
|
||||
<LeftShield>k__BackingField: -1
|
||||
<Head>k__BackingField: 25
|
||||
<RightWeapon>k__BackingField: 28
|
||||
<Body>k__BackingField: 29
|
||||
<Flag>k__BackingField: -1
|
||||
- <Idx>k__BackingField: ai_view_sailor_p_001
|
||||
<BackPack>k__BackingField: 0
|
||||
<LeftWeapon>k__BackingField: 1
|
||||
<LeftShield>k__BackingField: -1
|
||||
<Head>k__BackingField: 11
|
||||
<RightWeapon>k__BackingField: -1
|
||||
<Body>k__BackingField: 1
|
||||
<Flag>k__BackingField: -1
|
||||
- <Idx>k__BackingField: ai_view_sailor_p_002
|
||||
<BackPack>k__BackingField: -1
|
||||
<LeftWeapon>k__BackingField: -1
|
||||
<LeftShield>k__BackingField: -1
|
||||
<Head>k__BackingField: 50
|
||||
<RightWeapon>k__BackingField: 31
|
||||
<Body>k__BackingField: 58
|
||||
<Flag>k__BackingField: -1
|
||||
- <Idx>k__BackingField: ai_view_sailor_p_003
|
||||
<BackPack>k__BackingField: -1
|
||||
<LeftWeapon>k__BackingField: -1
|
||||
<LeftShield>k__BackingField: -1
|
||||
<Head>k__BackingField: 36
|
||||
<RightWeapon>k__BackingField: 27
|
||||
<Body>k__BackingField: 60
|
||||
<Flag>k__BackingField: -1
|
||||
- <Idx>k__BackingField: ai_view_sailor_p_004
|
||||
<BackPack>k__BackingField: -1
|
||||
<LeftWeapon>k__BackingField: -1
|
||||
<LeftShield>k__BackingField: 2
|
||||
<Head>k__BackingField: 22
|
||||
<RightWeapon>k__BackingField: 24
|
||||
<Body>k__BackingField: 58
|
||||
<Flag>k__BackingField: -1
|
||||
- <Idx>k__BackingField: ai_view_sailor_p_005
|
||||
<BackPack>k__BackingField: -1
|
||||
<LeftWeapon>k__BackingField: -1
|
||||
<LeftShield>k__BackingField: -1
|
||||
<Head>k__BackingField: 5
|
||||
<RightWeapon>k__BackingField: 12
|
||||
<Body>k__BackingField: 0
|
||||
<Flag>k__BackingField: -1
|
||||
- <Idx>k__BackingField: ai_view_captain_e_001
|
||||
<BackPack>k__BackingField: 1
|
||||
<LeftWeapon>k__BackingField: 2
|
||||
<LeftShield>k__BackingField: -1
|
||||
<Head>k__BackingField: 16
|
||||
<RightWeapon>k__BackingField: -1
|
||||
<Body>k__BackingField: 11
|
||||
<Flag>k__BackingField: 1
|
||||
- <Idx>k__BackingField: ai_view_captain_e_002
|
||||
<BackPack>k__BackingField: -1
|
||||
<LeftWeapon>k__BackingField: -1
|
||||
<LeftShield>k__BackingField: 1
|
||||
<Head>k__BackingField: 46
|
||||
<RightWeapon>k__BackingField: 27
|
||||
<Body>k__BackingField: 18
|
||||
<Flag>k__BackingField: 1
|
||||
- <Idx>k__BackingField: ai_view_captain_e_003
|
||||
<BackPack>k__BackingField: -1
|
||||
<LeftWeapon>k__BackingField: -1
|
||||
<LeftShield>k__BackingField: -1
|
||||
<Head>k__BackingField: 35
|
||||
<RightWeapon>k__BackingField: 27
|
||||
<Body>k__BackingField: 17
|
||||
<Flag>k__BackingField: 1
|
||||
- <Idx>k__BackingField: ai_view_captain_e_004
|
||||
<BackPack>k__BackingField: -1
|
||||
<LeftWeapon>k__BackingField: -1
|
||||
<LeftShield>k__BackingField: 9
|
||||
<Head>k__BackingField: 33
|
||||
<RightWeapon>k__BackingField: 6
|
||||
<Body>k__BackingField: 39
|
||||
<Flag>k__BackingField: 1
|
||||
- <Idx>k__BackingField: ai_view_captain_e_005
|
||||
<BackPack>k__BackingField: -1
|
||||
<LeftWeapon>k__BackingField: -1
|
||||
<LeftShield>k__BackingField: -1
|
||||
<Head>k__BackingField: 25
|
||||
<RightWeapon>k__BackingField: 28
|
||||
<Body>k__BackingField: 29
|
||||
<Flag>k__BackingField: 1
|
||||
- <Idx>k__BackingField: ai_view_captain_p_001
|
||||
<BackPack>k__BackingField: 0
|
||||
<LeftWeapon>k__BackingField: 1
|
||||
<LeftShield>k__BackingField: -1
|
||||
<Head>k__BackingField: 11
|
||||
<RightWeapon>k__BackingField: -1
|
||||
<Body>k__BackingField: 1
|
||||
<Flag>k__BackingField: 1
|
||||
- <Idx>k__BackingField: ai_view_captain_p_002
|
||||
<BackPack>k__BackingField: -1
|
||||
<LeftWeapon>k__BackingField: -1
|
||||
<LeftShield>k__BackingField: -1
|
||||
<Head>k__BackingField: 50
|
||||
<RightWeapon>k__BackingField: 31
|
||||
<Body>k__BackingField: 58
|
||||
<Flag>k__BackingField: 1
|
||||
- <Idx>k__BackingField: ai_view_captain_p_003
|
||||
<BackPack>k__BackingField: -1
|
||||
<LeftWeapon>k__BackingField: -1
|
||||
<LeftShield>k__BackingField: -1
|
||||
<Head>k__BackingField: 36
|
||||
<RightWeapon>k__BackingField: 27
|
||||
<Body>k__BackingField: 60
|
||||
<Flag>k__BackingField: 1
|
||||
- <Idx>k__BackingField: ai_view_captain_p_004
|
||||
<BackPack>k__BackingField: -1
|
||||
<LeftWeapon>k__BackingField: -1
|
||||
<LeftShield>k__BackingField: 2
|
||||
<Head>k__BackingField: 22
|
||||
<RightWeapon>k__BackingField: 24
|
||||
<Body>k__BackingField: 58
|
||||
<Flag>k__BackingField: 1
|
||||
- <Idx>k__BackingField: ai_view_captain_p_005
|
||||
<BackPack>k__BackingField: -1
|
||||
<LeftWeapon>k__BackingField: -1
|
||||
<LeftShield>k__BackingField: -1
|
||||
<Head>k__BackingField: 5
|
||||
<RightWeapon>k__BackingField: 12
|
||||
<Body>k__BackingField: 0
|
||||
<Flag>k__BackingField: 1
|
@ -1,7 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 697b6e7dea1fde146b7e3e5cf3ed9e9f
|
||||
DefaultImporter:
|
||||
guid: ae7ec952e14cea8499afd4a7b8ee8dfb
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -14,65 +14,16 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
cardDataList:
|
||||
- <Idx>k__BackingField: card_001
|
||||
<Unit>k__BackingField:
|
||||
<UnitName>k__BackingField: Legolas
|
||||
<UnitType>k__BackingField: 6
|
||||
<SoliderCount>k__BackingField: 6
|
||||
<AttackerType>k__BackingField: 1
|
||||
<OffenseType>k__BackingField: 1
|
||||
<DefenseType>k__BackingField: 0
|
||||
soldierList: []
|
||||
<UnitIdx>k__BackingField: unit_archer_p_001
|
||||
- <Idx>k__BackingField: card_002
|
||||
<Unit>k__BackingField:
|
||||
<UnitName>k__BackingField: Robin Hood
|
||||
<UnitType>k__BackingField: 6
|
||||
<SoliderCount>k__BackingField: 4
|
||||
<AttackerType>k__BackingField: 1
|
||||
<OffenseType>k__BackingField: 1
|
||||
<DefenseType>k__BackingField: 0
|
||||
soldierList: []
|
||||
<UnitIdx>k__BackingField: unit_archer_p_002
|
||||
- <Idx>k__BackingField: card_003
|
||||
<Unit>k__BackingField:
|
||||
<UnitName>k__BackingField: Olaf
|
||||
<UnitType>k__BackingField: 7
|
||||
<SoliderCount>k__BackingField: 6
|
||||
<AttackerType>k__BackingField: 1
|
||||
<OffenseType>k__BackingField: 1
|
||||
<DefenseType>k__BackingField: 0
|
||||
soldierList: []
|
||||
<UnitIdx>k__BackingField: unit_axeman_p_001
|
||||
- <Idx>k__BackingField: card_004
|
||||
<Unit>k__BackingField:
|
||||
<UnitName>k__BackingField: Lancer
|
||||
<UnitType>k__BackingField: 8
|
||||
<SoliderCount>k__BackingField: 8
|
||||
<AttackerType>k__BackingField: 1
|
||||
<OffenseType>k__BackingField: 1
|
||||
<DefenseType>k__BackingField: 0
|
||||
soldierList: []
|
||||
<UnitIdx>k__BackingField: unit_spearman_p_001
|
||||
- <Idx>k__BackingField: card_005
|
||||
<Unit>k__BackingField:
|
||||
<UnitName>k__BackingField:
|
||||
<UnitType>k__BackingField: 9
|
||||
<SoliderCount>k__BackingField: 0
|
||||
<AttackerType>k__BackingField: 1
|
||||
<OffenseType>k__BackingField: 1
|
||||
<DefenseType>k__BackingField: 0
|
||||
soldierList: []
|
||||
<UnitIdx>k__BackingField: unit_sword_knight_p_001
|
||||
- <Idx>k__BackingField: card_006
|
||||
<Unit>k__BackingField:
|
||||
<UnitName>k__BackingField: Aragorn
|
||||
<UnitType>k__BackingField: 10
|
||||
<SoliderCount>k__BackingField: 9
|
||||
<AttackerType>k__BackingField: 1
|
||||
<OffenseType>k__BackingField: 1
|
||||
<DefenseType>k__BackingField: 0
|
||||
soldierList: []
|
||||
<UnitIdx>k__BackingField: unit_swordman_p_001
|
||||
- <Idx>k__BackingField: card_007
|
||||
<Unit>k__BackingField:
|
||||
<UnitName>k__BackingField: King Arthur
|
||||
<UnitType>k__BackingField: 10
|
||||
<SoliderCount>k__BackingField: 6
|
||||
<AttackerType>k__BackingField: 1
|
||||
<OffenseType>k__BackingField: 2
|
||||
<DefenseType>k__BackingField: 0
|
||||
soldierList: []
|
||||
<UnitIdx>k__BackingField: unit_swordman_p_002
|
||||
|
78
BlueWater/Assets/02.Scripts/Data/So/UnitDataSo.asset
Normal file
78
BlueWater/Assets/02.Scripts/Data/So/UnitDataSo.asset
Normal file
@ -0,0 +1,78 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3cfd6c9178f4c2a48a79549b238ac772, type: 3}
|
||||
m_Name: UnitDataSo
|
||||
m_EditorClassIdentifier:
|
||||
unitDataList:
|
||||
- <Idx>k__BackingField: unit_archer_p_001
|
||||
<CaptainStatIdx>k__BackingField: ai_stat_captain_p_001
|
||||
<SailorStatIdx>k__BackingField: ai_stat_sailor_p_001
|
||||
<UnitName>k__BackingField: Legolas
|
||||
<UnitType>k__BackingField: 5
|
||||
<SailorCount>k__BackingField: 8
|
||||
<AttackerType>k__BackingField: 0
|
||||
<OffenseType>k__BackingField: 0
|
||||
<DefenseType>k__BackingField: -1
|
||||
- <Idx>k__BackingField: unit_archer_p_002
|
||||
<CaptainStatIdx>k__BackingField: ai_stat_captain_p_001
|
||||
<SailorStatIdx>k__BackingField: ai_stat_sailor_p_001
|
||||
<UnitName>k__BackingField: Robin Hood
|
||||
<UnitType>k__BackingField: 5
|
||||
<SailorCount>k__BackingField: 5
|
||||
<AttackerType>k__BackingField: 0
|
||||
<OffenseType>k__BackingField: 0
|
||||
<DefenseType>k__BackingField: -1
|
||||
- <Idx>k__BackingField: unit_axeman_p_001
|
||||
<CaptainStatIdx>k__BackingField: ai_stat_captain_p_002
|
||||
<SailorStatIdx>k__BackingField: ai_stat_sailor_p_002
|
||||
<UnitName>k__BackingField: Olaf
|
||||
<UnitType>k__BackingField: 6
|
||||
<SailorCount>k__BackingField: 5
|
||||
<AttackerType>k__BackingField: 0
|
||||
<OffenseType>k__BackingField: 0
|
||||
<DefenseType>k__BackingField: -1
|
||||
- <Idx>k__BackingField: unit_spearman_p_001
|
||||
<CaptainStatIdx>k__BackingField: ai_stat_captain_p_003
|
||||
<SailorStatIdx>k__BackingField: ai_stat_sailor_p_003
|
||||
<UnitName>k__BackingField: Lancer
|
||||
<UnitType>k__BackingField: 7
|
||||
<SailorCount>k__BackingField: 7
|
||||
<AttackerType>k__BackingField: 0
|
||||
<OffenseType>k__BackingField: 1
|
||||
<DefenseType>k__BackingField: -1
|
||||
- <Idx>k__BackingField: unit_sword_knight_p_001
|
||||
<CaptainStatIdx>k__BackingField: ai_stat_captain_p_004
|
||||
<SailorStatIdx>k__BackingField: ai_stat_sailor_p_004
|
||||
<UnitName>k__BackingField: Achilles
|
||||
<UnitType>k__BackingField: 8
|
||||
<SailorCount>k__BackingField: 3
|
||||
<AttackerType>k__BackingField: 0
|
||||
<OffenseType>k__BackingField: 0
|
||||
<DefenseType>k__BackingField: -1
|
||||
- <Idx>k__BackingField: unit_swordman_p_001
|
||||
<CaptainStatIdx>k__BackingField: ai_stat_captain_p_005
|
||||
<SailorStatIdx>k__BackingField: ai_stat_sailor_p_005
|
||||
<UnitName>k__BackingField: Aragorn
|
||||
<UnitType>k__BackingField: 9
|
||||
<SailorCount>k__BackingField: 5
|
||||
<AttackerType>k__BackingField: 0
|
||||
<OffenseType>k__BackingField: 1
|
||||
<DefenseType>k__BackingField: -1
|
||||
- <Idx>k__BackingField: unit_swordman_p_002
|
||||
<CaptainStatIdx>k__BackingField: ai_stat_captain_p_005
|
||||
<SailorStatIdx>k__BackingField: ai_stat_sailor_p_005
|
||||
<UnitName>k__BackingField: King Arthur
|
||||
<UnitType>k__BackingField: 9
|
||||
<SailorCount>k__BackingField: 11
|
||||
<AttackerType>k__BackingField: 0
|
||||
<OffenseType>k__BackingField: 0
|
||||
<DefenseType>k__BackingField: -1
|
@ -1,7 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a55ee4efaad27d948ba5f03fc6d7bc80
|
||||
DefaultImporter:
|
||||
guid: a017fce7d59b4fc4cb88332a7854eef3
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
12
BlueWater/Assets/02.Scripts/Data/UnitDataSo.cs
Normal file
12
BlueWater/Assets/02.Scripts/Data/UnitDataSo.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[CreateAssetMenu(fileName = "UnitDataSo", menuName = "ScriptableObjects/UnitData", order = 2)]
|
||||
public class UnitDataSo : ScriptableObject
|
||||
{
|
||||
public List<Unit> unitDataList = new(GlobalValue.UNIT_CAPACITY);
|
||||
}
|
||||
}
|
11
BlueWater/Assets/02.Scripts/Data/UnitDataSo.cs.meta
Normal file
11
BlueWater/Assets/02.Scripts/Data/UnitDataSo.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3cfd6c9178f4c2a48a79549b238ac772
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -16,7 +16,7 @@ namespace BlueWaterProject
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
SetCurrentHp(AiStat.maxHp);
|
||||
SetCurrentHp(AiStat.MaxHp);
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
@ -30,13 +30,13 @@ namespace BlueWaterProject
|
||||
|
||||
[field: SerializeField] public AiStat AiStat { get; set; }
|
||||
|
||||
public float GetCurrentHp() => AiStat.currentHp;
|
||||
public float GetCurrentHp() => AiStat.CurrentHp;
|
||||
|
||||
public void SetCurrentHp(float value) => AiStat.currentHp = value;
|
||||
public void SetCurrentHp(float value) => AiStat.CurrentHp = value;
|
||||
|
||||
public void TakeDamage(AiStat attacker, AiStat defender, Vector3? attackPos = null)
|
||||
{
|
||||
var changeHp = Mathf.Max(defender.currentHp - attacker.atk, 0);
|
||||
var changeHp = Mathf.Max(defender.CurrentHp - attacker.Atk, 0);
|
||||
SetCurrentHp(changeHp);
|
||||
|
||||
// 건물 파괴
|
||||
|
@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using BlueWaterProject;
|
||||
using UnityEngine;
|
||||
|
||||
namespace _02.Scripts.WaterAndShip
|
||||
@ -7,7 +6,10 @@ namespace _02.Scripts.WaterAndShip
|
||||
[Serializable]
|
||||
public class Card
|
||||
{
|
||||
[field: Tooltip("고유 인덱스")]
|
||||
[field: SerializeField] public string Idx { get; set; }
|
||||
[field: SerializeField] public Unit Unit { get; set; }
|
||||
|
||||
[field: Tooltip("유닛 인덱스")]
|
||||
[field: SerializeField] public string UnitIdx { get; set; }
|
||||
}
|
||||
}
|
@ -1,10 +1,14 @@
|
||||
public class GlobalValue
|
||||
{
|
||||
public const int CARD_DATA_CAPACITY = 50;
|
||||
public const int AI_VIEW_DATA_CAPACITY = 50;
|
||||
public const int AI_STAT_DATA_CAPACITY = 50;
|
||||
public const int UNIT_CAPACITY = 50;
|
||||
public const int ONE_UNIT_CAPACITY = 16;
|
||||
|
||||
public enum UnitType
|
||||
{
|
||||
NONE = 0,
|
||||
NONE = -1,
|
||||
ARCHER_E,
|
||||
SPEAR_KNIGHT_E,
|
||||
SPEARMAN_E,
|
||||
|
@ -91,15 +91,15 @@ namespace BlueWaterProject
|
||||
{
|
||||
var finalDamage = 0f;
|
||||
|
||||
if (defender.usingShield)
|
||||
if (defender.UsingShield)
|
||||
{
|
||||
var penetrationChance = attacker.shieldPenetrationRate -
|
||||
(attacker.shieldPenetrationRate * defender.penetrationResistivity * 0.01f);
|
||||
var penetrationChance = attacker.ShieldPenetrationRate -
|
||||
(attacker.ShieldPenetrationRate * defender.PenetrationResistivity * 0.01f);
|
||||
|
||||
// 방패를 관통했다면,
|
||||
if (Random.Range(0, 100) < penetrationChance)
|
||||
{
|
||||
finalDamage = attacker.atk - defender.def;
|
||||
finalDamage = attacker.Atk - defender.Def;
|
||||
finalDamage = Mathf.Max(finalDamage, 0);
|
||||
return finalDamage;
|
||||
}
|
||||
@ -108,7 +108,7 @@ namespace BlueWaterProject
|
||||
return 0;
|
||||
}
|
||||
|
||||
finalDamage = attacker.atk - defender.def;
|
||||
finalDamage = attacker.Atk - defender.Def;
|
||||
finalDamage = Mathf.Max(finalDamage, 0);
|
||||
|
||||
return finalDamage;
|
||||
|
@ -4,7 +4,7 @@ using UnityEngine;
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public class MeleeWeapon : MonoBehaviour
|
||||
public class CloseWeapon : MonoBehaviour
|
||||
{
|
||||
#region Property and variable
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -8930,7 +8930,7 @@ Transform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!95 &9542722
|
||||
Animator:
|
||||
serializedVersion: 5
|
||||
serializedVersion: 7
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
@ -8944,6 +8944,7 @@ Animator:
|
||||
m_ApplyRootMotion: 1
|
||||
m_LinearVelocityBlending: 0
|
||||
m_StabilizeFeet: 0
|
||||
m_AnimatePhysics: 0
|
||||
m_WarningMessage:
|
||||
m_HasTransformHierarchy: 1
|
||||
m_AllowConstantClipSamplingOptimization: 1
|
||||
@ -9089,7 +9090,6 @@ MonoBehaviour:
|
||||
- {fileID: 0}
|
||||
- {fileID: 0}
|
||||
<TargetTransform>k__BackingField: {fileID: 0}
|
||||
<MovePos>k__BackingField: {x: 0, y: 0, z: 0}
|
||||
<AttackMoveType>k__BackingField: 2
|
||||
<BeAttackedMoveType>k__BackingField: 1
|
||||
<IsCommanded>k__BackingField: 0
|
||||
|
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ed9b95dc6ed6d0647ad7f1a8f305385d
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 078b8f13a17171b49892ad10426d5af0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f9406a33814af9c47b352e77f079d798
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9aacf6f3043624194bb6f6fe9a580786
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,14 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f4227764308e84f89a765fbf315e2945
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 143368
|
||||
packageName: 'Flat Kit: Toon Shading and Water'
|
||||
packageVersion: 3.9.1
|
||||
assetPath: Assets/FlatKit/[Render Pipeline] Built-In.unitypackage
|
||||
uploadId: 607933
|
@ -1,14 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 41e59f562b69648719f2424c438758f3
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 143368
|
||||
packageName: 'Flat Kit: Toon Shading and Water'
|
||||
packageVersion: 3.9.1
|
||||
assetPath: Assets/FlatKit/[Render Pipeline] Universal (URP).unitypackage
|
||||
uploadId: 607933
|
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b044a2387a61dac41bdf204adffdce9d
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cd287c84e887ea24a8679e67aac7c074
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5f3f53ee059b45a4d9a5b9fc75e8aea9
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f211254f5bfad224ba88868f2c75432c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4368c9be31b3c174dbfd80f2caf98889
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f597f19f656ba56eae4f6a3a7cc528f4
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 48e08dc33330d11e9d4a1b246c52e4f6
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ed09910c0094cb27be8f3ca264680da3
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cc355dd4cf1e6173beaeb22c2858cbe1
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -18,7 +18,7 @@ PlayerSettings:
|
||||
cursorHotspot: {x: 0, y: 0}
|
||||
m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
|
||||
m_ShowUnitySplashScreen: 1
|
||||
m_ShowUnitySplashLogo: 0
|
||||
m_ShowUnitySplashLogo: 1
|
||||
m_SplashScreenOverlayOpacity: 1
|
||||
m_SplashScreenAnimation: 1
|
||||
m_SplashScreenLogoStyle: 1
|
||||
@ -809,7 +809,7 @@ PlayerSettings:
|
||||
PS5: UNITY_POST_PROCESSING_STACK_V2;INPUT_SYSTEM_PACKAGE
|
||||
QNX: UNITY_POST_PROCESSING_STACK_V2;INPUT_SYSTEM_PACKAGE
|
||||
Stadia: UNITY_POST_PROCESSING_STACK_V2;INPUT_SYSTEM_PACKAGE
|
||||
Standalone: CROSS_PLATFORM_INPUT;UNITY_POST_PROCESSING_STACK_V2;NWH_DWP2;CREST_OCEAN;DWP_CREST;ODIN_INSPECTOR;ODIN_INSPECTOR_3;ODIN_INSPECTOR_3_1;INPUT_SYSTEM_PACKAGE;MOREMOUNTAINS_NICEVIBRATIONS_INSTALLED
|
||||
Standalone: CROSS_PLATFORM_INPUT;UNITY_POST_PROCESSING_STACK_V2;NWH_DWP2;CREST_OCEAN;DWP_CREST;ODIN_INSPECTOR;ODIN_INSPECTOR_3;ODIN_INSPECTOR_3_1;INPUT_SYSTEM_PACKAGE;MOREMOUNTAINS_NICEVIBRATIONS_INSTALLED;ODIN_INSPECTOR_EDITOR_ONLY
|
||||
VisionOS: UNITY_POST_PROCESSING_STACK_V2;INPUT_SYSTEM_PACKAGE
|
||||
WebGL: UNITY_POST_PROCESSING_STACK_V2;INPUT_SYSTEM_PACKAGE
|
||||
Windows Store Apps: UNITY_POST_PROCESSING_STACK_V2;INPUT_SYSTEM_PACKAGE
|
||||
|
Loading…
Reference in New Issue
Block a user