diff --git a/Assets/02_Scripts/Combat/ActionData.cs b/Assets/02_Scripts/Combat/ActionData.cs index bd530f2..3006a4d 100644 --- a/Assets/02_Scripts/Combat/ActionData.cs +++ b/Assets/02_Scripts/Combat/ActionData.cs @@ -1,6 +1,13 @@ using UnityEngine; using UnityEngine.Serialization; +// 공격 판정 영역의 도형. Circle은 원거리 균등 판정, Box는 길쭉한 직선/넓은 부채꼴에 적합. +public enum HitShape +{ + Circle, + Box +} + // ============================================================================ // ActionData // ---------------------------------------------------------------------------- @@ -44,8 +51,10 @@ public class ActionData : ScriptableObject // ─── 공격 판정 (HasHit=true일 때 적용) ───────────────────────────── [Header("Hit")] public bool HasHit = true; // 이 액션이 데미지를 주는지 + public HitShape Shape = HitShape.Circle; // Circle = Radius 사용, Box = HitSize 사용 public Vector2 Offset = new Vector2(0.5f, 0f); // 캐릭터 기준 hit 영역 중심 (X는 facing 방향) - public float Radius = 0.5f; // hit 영역 반경 (AttackHitbox.CircleCollider2D) + public float Radius = 0.5f; // Circle일 때 사용하는 반경 + public Vector2 HitSize = new Vector2(1f, 0.5f); // Box일 때 사용하는 가로/세로 크기 public int Damage = 10; // 데미지 양 public float HitTiming = 0.15f; // 액션 시작 후 hit 발동까지 시간 (선딜) public float HitDuration = 0f; // hit 영역이 활성 상태로 유지되는 시간 (0이면 단발) diff --git a/Assets/02_Scripts/Combat/AttackHitbox.cs b/Assets/02_Scripts/Combat/AttackHitbox.cs index 0febe77..4f6a168 100644 --- a/Assets/02_Scripts/Combat/AttackHitbox.cs +++ b/Assets/02_Scripts/Combat/AttackHitbox.cs @@ -20,7 +20,11 @@ public class AttackHitbox : MonoBehaviour // PlayerController가 구독해서 "방금 hit한 적" 추적용 (잡기 타겟 우선 등에 활용). public event System.Action OnHit; - private CircleCollider2D _collider; + private CircleCollider2D _circleCollider; // Circle 모양 판정용 + private BoxCollider2D _boxCollider; // Box 모양 판정용 (Awake에서 자동 생성) + private HitShape _activeShape; // 현재 활성 도형 (ScanImmediateOverlap에서 분기) + private float _activeRadius; // Circle일 때 사용하는 반경 (스캔/Gizmo용 백업) + private Vector2 _activeHitSize; // Box일 때 사용하는 크기 백업 // ─── 현재 활성 액션의 데미지/효과 데이터 (Activate에서 세팅) ───────── private int _damage; @@ -39,18 +43,43 @@ public class AttackHitbox : MonoBehaviour private void Awake() { - _collider = GetComponent(); - // 플레이어 몸체는 적과 물리 충돌하지 않으므로, 공격 판정은 이 트리거만 사용한다. - _collider.isTrigger = true; - _collider.enabled = false; + _circleCollider = GetComponent(); + // 플레이어 몸체는 적과 물리 충돌하지 않으므로, 공격 판정은 트리거만 사용. + _circleCollider.isTrigger = true; + _circleCollider.enabled = false; + + // BoxCollider2D는 없으면 자동 추가. 기존 프리팹과의 호환성 유지. + _boxCollider = GetComponent(); + if (_boxCollider == null) + _boxCollider = gameObject.AddComponent(); + _boxCollider.isTrigger = true; + _boxCollider.enabled = false; } - // 액션 시작 시 호출. 위치/반경/데미지 등 모든 파라미터 세팅 후 콜라이더 활성화. + // 액션 시작 시 호출. 도형/위치/데미지 세팅 후 해당 콜라이더만 활성화. // _alreadyHit를 클리어해서 새 공격으로 다시 hit 가능하게 함. public void Activate(ActionData data, Vector2 localPosition, Vector2 hitVelocity, Vector2 sourcePosition, Vector2? hitTargetPosition, bool correctHitTargetY, int hitPositionSolidMask, LayerMask targetLayer) { transform.localPosition = localPosition; - _collider.radius = data.Radius; + + // 도형에 맞는 콜라이더만 활성화. 다른 도형 콜라이더는 비활성으로 보장. + _activeShape = data.Shape; + if (data.Shape == HitShape.Box) + { + _boxCollider.size = data.HitSize; + _boxCollider.offset = Vector2.zero; + _boxCollider.enabled = true; + _circleCollider.enabled = false; + _activeHitSize = data.HitSize; + } + else + { + _circleCollider.radius = data.Radius; + _circleCollider.enabled = true; + _boxCollider.enabled = false; + _activeRadius = data.Radius; + } + _damage = data.Damage; _hitVelocity = hitVelocity; _hitSourcePosition = sourcePosition; @@ -62,24 +91,27 @@ public void Activate(ActionData data, Vector2 localPosition, Vector2 hitVelocity _hitReactionState = data.HitReactionAnimationState; _targetLayer = targetLayer; _alreadyHit.Clear(); - _collider.enabled = true; // 판정이 켜진 순간 이미 범위 안에 있던 적도 같은 프레임에 잡아낸다. ScanImmediateOverlap(); } - // 액션의 HitDuration이 끝나면 호출. 콜라이더 비활성화 + hit 기록 초기화. + // 액션의 HitDuration이 끝나면 호출. 모든 콜라이더 비활성화 + hit 기록 초기화. public void Deactivate() { - _collider.enabled = false; + _circleCollider.enabled = false; + _boxCollider.enabled = false; _alreadyHit.Clear(); } - // 활성 순간 즉시 검사: Physics2D.OverlapCircleAll로 현재 겹친 콜라이더를 모두 가져와 TryDamage. + // 활성 순간 즉시 검사: 도형에 맞는 OverlapAll로 현재 겹친 콜라이더를 모두 가져와 TryDamage. // 이게 없으면 짧은 hit window (예: HitDuration=0.02)에 OnTriggerEnter가 못 따라옴. private void ScanImmediateOverlap() { - Collider2D[] hits = Physics2D.OverlapCircleAll(transform.position, _collider.radius, _targetLayer); + Collider2D[] hits = _activeShape == HitShape.Box + ? Physics2D.OverlapBoxAll(transform.position, _activeHitSize, 0f, _targetLayer) + : Physics2D.OverlapCircleAll(transform.position, _activeRadius, _targetLayer); + foreach (var hit in hits) TryDamage(hit); } diff --git a/Assets/02_Scripts/Combat/PlayerWeaponInventory.cs b/Assets/02_Scripts/Combat/PlayerWeaponInventory.cs new file mode 100644 index 0000000..2d4f80e --- /dev/null +++ b/Assets/02_Scripts/Combat/PlayerWeaponInventory.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +// ============================================================================ +// PlayerWeaponInventory +// ---------------------------------------------------------------------------- +// 플레이어가 보유한 무기 목록 + 현재 장착 무기 관리. +// PlayerController가 OnWeaponChanged 이벤트를 구독해서 애니메이션/공격 콤보 교체. +// +// 슬롯 매핑 (외부 코드의 EquipSlot 인덱스): +// -1 → 맨손 (CurrentWeapon == null) +// 0 → 첫 번째로 픽업한 무기 +// 1 → 두 번째로 픽업한 무기 +// ... +// +// 입력 키 매핑 (PlayerController에서 처리): +// Key 1 → EquipUnarmed() +// Key 2 → EquipSlot(0) +// Key 3 → EquipSlot(1) +// ============================================================================ +public class PlayerWeaponInventory : MonoBehaviour +{ + private readonly List _weapons = new(); + private int _currentIndex = -1; // -1 = 맨손 + + // 무기 교체 시 발화. null이면 맨손. + public event Action OnWeaponChanged; + + public WeaponData CurrentWeapon => + _currentIndex >= 0 && _currentIndex < _weapons.Count + ? _weapons[_currentIndex] + : null; + public bool IsArmed => CurrentWeapon != null; + public int Count => _weapons.Count; + + // 무기 추가. 이미 보유 중이면 false 반환 (중복 픽업 방지). + // 첫 픽업 시 자동 장착할지는 호출자가 OnWeaponChanged를 보고 결정. + public bool Pickup(WeaponData weapon) + { + if (weapon == null) return false; + if (_weapons.Contains(weapon)) return false; + + _weapons.Add(weapon); + + // 첫 픽업이면 자동으로 장착해주면 사용자 편의 ↑. + if (_weapons.Count == 1 && _currentIndex == -1) + { + _currentIndex = 0; + OnWeaponChanged?.Invoke(_weapons[0]); + } + + return true; + } + + // 맨손 상태로 전환. + public void EquipUnarmed() + { + if (_currentIndex == -1) return; + _currentIndex = -1; + OnWeaponChanged?.Invoke(null); + } + + // 슬롯 번호로 직접 장착. 슬롯이 비어있으면 무시. + public void EquipSlot(int slotIndex) + { + if (slotIndex < 0 || slotIndex >= _weapons.Count) return; + if (_currentIndex == slotIndex) return; + _currentIndex = slotIndex; + OnWeaponChanged?.Invoke(_weapons[slotIndex]); + } + + // 디버그용: 슬롯에 해당 무기가 있는지 확인. + public bool HasWeaponInSlot(int slotIndex) + { + return slotIndex >= 0 && slotIndex < _weapons.Count && _weapons[slotIndex] != null; + } +} diff --git a/Assets/02_Scripts/Combat/PlayerWeaponInventory.cs.meta b/Assets/02_Scripts/Combat/PlayerWeaponInventory.cs.meta new file mode 100644 index 0000000..cd3aeeb --- /dev/null +++ b/Assets/02_Scripts/Combat/PlayerWeaponInventory.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: b8fc250baa41ff840a2b5d6a0b308081 \ No newline at end of file diff --git a/Assets/02_Scripts/Combat/WeaponData.cs b/Assets/02_Scripts/Combat/WeaponData.cs new file mode 100644 index 0000000..2158573 --- /dev/null +++ b/Assets/02_Scripts/Combat/WeaponData.cs @@ -0,0 +1,39 @@ +using UnityEngine; + +// ============================================================================ +// WeaponType +// ---------------------------------------------------------------------------- +// 무기 분류. 향후 다른 시스템(예: 데미지 면역, 약점)에서 분기용으로 사용. +// ============================================================================ +public enum WeaponType +{ + Sword, + Gun +} + +// ============================================================================ +// WeaponData +// ---------------------------------------------------------------------------- +// 무기 한 종류의 정의를 담은 ScriptableObject. +// .asset 파일로 만들어 적의 드랍 슬롯과 픽업 프리팹에 할당. +// +// 효과: +// - 장착 시 _idleAnimationState / _walkAnimationState를 이 무기 버전으로 교체 +// - Punch 입력 시 _punchRootNode 대신 AttackRootNode 사용 +// ============================================================================ +[CreateAssetMenu(fileName = "WeaponData", menuName = "Combat/WeaponData")] +public class WeaponData : ScriptableObject +{ + public string DisplayName; // UI 표시/디버그용 이름 + public WeaponType Type = WeaponType.Sword; // 분류 (시스템 분기용) + + [Header("Equipped Animations")] + public string IdleAnimationState; // 장착 시 idle 애니메이션 (예: "Idle_Sword") + public string WalkAnimationState; // 장착 시 walk 애니메이션 (예: "Walk_Sword") + + [Header("Attack")] + public ComboNode AttackRootNode; // Punch 입력 시 사용할 콤보 root (단일 노드 가능) + + [Header("Pickup Visual")] + public Sprite PickupSprite; // 월드에 떨어뜨려진 모습 +} diff --git a/Assets/02_Scripts/Combat/WeaponData.cs.meta b/Assets/02_Scripts/Combat/WeaponData.cs.meta new file mode 100644 index 0000000..431324b --- /dev/null +++ b/Assets/02_Scripts/Combat/WeaponData.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 45b80750b5f29714e8386d1330b97550 \ No newline at end of file diff --git a/Assets/02_Scripts/Combat/WeaponPickup.cs b/Assets/02_Scripts/Combat/WeaponPickup.cs new file mode 100644 index 0000000..f7b91fe --- /dev/null +++ b/Assets/02_Scripts/Combat/WeaponPickup.cs @@ -0,0 +1,58 @@ +using UnityEngine; + +// ============================================================================ +// WeaponPickup +// ---------------------------------------------------------------------------- +// 월드에 떨어진 무기. 플레이어가 트리거 영역에 들어오면 자동으로 인벤토리에 추가되고 사라짐. +// +// 두 가지 사용 패턴: +// 1) 씬에 미리 배치 → Inspector에서 _weapon 할당 → 자동 표시 +// 2) 코드로 동적 스폰 → Initialize(WeaponData)로 무기 주입 (Enemy.HandleDeath) +// ============================================================================ +[RequireComponent(typeof(Collider2D))] +[RequireComponent(typeof(SpriteRenderer))] +public class WeaponPickup : MonoBehaviour +{ + [SerializeField] private WeaponData _weapon; + + private SpriteRenderer _spriteRenderer; + + private void Awake() + { + _spriteRenderer = GetComponent(); + + // 픽업은 물리 충돌 아닌 트리거. 플레이어가 통과하면서 줍게. + Collider2D col = GetComponent(); + col.isTrigger = true; + + ApplyVisual(); + } + + // 코드로 동적 스폰 시 호출. Enemy.HandleDeath에서 사용. + public void Initialize(WeaponData weapon) + { + _weapon = weapon; + ApplyVisual(); + } + + private void ApplyVisual() + { + if (_spriteRenderer == null || _weapon == null) return; + if (_weapon.PickupSprite != null) + _spriteRenderer.sprite = _weapon.PickupSprite; + } + + // 플레이어가 트리거 영역에 진입 시 발화. + // Player(또는 자식)에 PlayerWeaponInventory 컴포넌트가 있어야 픽업 됨. + // 이미 보유 중이면 Pickup이 false 반환 → pickup 오브젝트 그대로 유지. + private void OnTriggerEnter2D(Collider2D other) + { + if (_weapon == null) return; + + PlayerWeaponInventory inventory = other.GetComponentInParent(); + if (inventory == null) return; + + if (inventory.Pickup(_weapon)) + Destroy(gameObject); + } +} diff --git a/Assets/02_Scripts/Combat/WeaponPickup.cs.meta b/Assets/02_Scripts/Combat/WeaponPickup.cs.meta new file mode 100644 index 0000000..c9317d9 --- /dev/null +++ b/Assets/02_Scripts/Combat/WeaponPickup.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2ccfada8b880c0045804198a4754cf2f \ No newline at end of file diff --git a/Assets/02_Scripts/Enemy/Enemy.cs b/Assets/02_Scripts/Enemy/Enemy.cs index 5e30bf6..c2098c0 100644 --- a/Assets/02_Scripts/Enemy/Enemy.cs +++ b/Assets/02_Scripts/Enemy/Enemy.cs @@ -42,6 +42,11 @@ public class Enemy : MonoBehaviour, IDamageable [SerializeField] private LayerMask _separationLayer; // 검사 대상 레이어 (보통 Enemy) private static readonly Collider2D[] _separationBuffer = new Collider2D[16]; // OverlapCircle 결과 버퍼 (GC 회피) + // ─── 사망 시 드랍 ─────────────────────────────────────────────────── + [Header("Drop")] + [SerializeField] private WeaponData _dropWeapon; // null이면 드랍 안 함 + [SerializeField] private WeaponPickup _weaponPickupPrefab; // 픽업 오브젝트 프리팹 (한 종류 공유 가능) + private Health _health; // HP 컴포넌트 (별도 분리 → 플레이어도 같은 컴포넌트 재사용 가능) private Rigidbody2D _rb; private Animator _anim; @@ -448,10 +453,19 @@ private void BounceOffWall(Vector2 wallNormal) } // Health.OnDied 이벤트 콜백. 사망 처리. - // 현재는 단순 Destroy. 나중에 풀링/드롭/이펙트 추가하려면 여기에 확장. + // _dropWeapon이 설정돼 있고 픽업 프리팹이 있으면 자기 위치에 무기 드랍. private void HandleDeath() { Debug.Log($"{name} 사망"); + DropWeaponIfAny(); Destroy(gameObject); } + + private void DropWeaponIfAny() + { + if (_dropWeapon == null || _weaponPickupPrefab == null) return; + + WeaponPickup pickup = Instantiate(_weaponPickupPrefab, transform.position, Quaternion.identity); + pickup.Initialize(_dropWeapon); + } } diff --git a/Assets/02_Scripts/Player/PlayerController.cs b/Assets/02_Scripts/Player/PlayerController.cs index 9782197..42f6015 100644 --- a/Assets/02_Scripts/Player/PlayerController.cs +++ b/Assets/02_Scripts/Player/PlayerController.cs @@ -1372,13 +1372,26 @@ private void OnDrawGizmos() float t = Mathf.Clamp01(since / _hitGizmoFadeDuration); float alpha = Mathf.Lerp(0.85f, 0f, t); - float radius = _lastHitData.Radius; - Gizmos.color = new Color(1f, 0.2f, 0.2f, alpha * 0.35f); - Gizmos.DrawSphere(_lastHitCenter, radius); + Color fillColor = new Color(1f, 0.2f, 0.2f, alpha * 0.35f); + Color wireColor = new Color(1f, 0f, 0f, alpha); - Gizmos.color = new Color(1f, 0f, 0f, alpha); - Gizmos.DrawWireSphere(_lastHitCenter, radius); + if (_lastHitData.Shape == HitShape.Box) + { + Vector3 size = new Vector3(_lastHitData.HitSize.x, _lastHitData.HitSize.y, 0.01f); + Gizmos.color = fillColor; + Gizmos.DrawCube(_lastHitCenter, size); + Gizmos.color = wireColor; + Gizmos.DrawWireCube(_lastHitCenter, size); + } + else + { + float radius = _lastHitData.Radius; + Gizmos.color = fillColor; + Gizmos.DrawSphere(_lastHitCenter, radius); + Gizmos.color = wireColor; + Gizmos.DrawWireSphere(_lastHitCenter, radius); + } } private void OnDrawGizmosSelected() diff --git a/Assets/03_Character/WhiteMan/Animations/GunFire.anim b/Assets/03_Character/WhiteMan/Animations/GunFire.anim index cf28ad5..7e50648 100644 --- a/Assets/03_Character/WhiteMan/Animations/GunFire.anim +++ b/Assets/03_Character/WhiteMan/Animations/GunFire.anim @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:38a01a6c39250cd9dd80f5a7170308aa6b49c11e6de25de6ffb249361cfcf7da +oid sha256:2460da7a5388e2349a24dd08f1a1360d8300ffc5eba9827fb6cb25538e326f5f size 2479 diff --git a/Assets/03_Character/WhiteMan/Animations/SwordAttack.anim b/Assets/03_Character/WhiteMan/Animations/SwordAttack.anim index da84d3e..1b05a35 100644 --- a/Assets/03_Character/WhiteMan/Animations/SwordAttack.anim +++ b/Assets/03_Character/WhiteMan/Animations/SwordAttack.anim @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1a61456a95f2dc5c2e98c7028b32664f6b3be35d66e200fcc8840b6b94d54ab7 +oid sha256:30ce68745c3751040f651e589db28730aa288663bc8b3e35c9d0701c2414086e size 3001 diff --git a/Assets/03_Character/WhiteMan/Animations/SwordStandingSlash.anim b/Assets/03_Character/WhiteMan/Animations/SwordStandingSlash.anim index 7f8eb9c..37d08a7 100644 --- a/Assets/03_Character/WhiteMan/Animations/SwordStandingSlash.anim +++ b/Assets/03_Character/WhiteMan/Animations/SwordStandingSlash.anim @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:170fe384e8b1f9a803d463ac1e16aa5c54b958b0d0ef2174f3f2dc8572665aa1 +oid sha256:c13b4e3307609f68d6d425dfb140e2ea813b20525157f89e7b52f7d9b2118677 size 2490 diff --git a/Assets/05_Data/Attack/GunFire.asset b/Assets/05_Data/Attack/GunFire.asset new file mode 100644 index 0000000..70b52ff --- /dev/null +++ b/Assets/05_Data/Attack/GunFire.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8bd649e64c3cbeabf013370fe88b6c3d9afc26dcebc90deef099014f34d4ac0 +size 2968 diff --git a/Assets/05_Data/Attack/GunFire.asset.meta b/Assets/05_Data/Attack/GunFire.asset.meta new file mode 100644 index 0000000..1b48c29 --- /dev/null +++ b/Assets/05_Data/Attack/GunFire.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 97246ca8e6b518b44a551fac7f37ef34 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/05_Data/Attack/SwordAttack.asset b/Assets/05_Data/Attack/SwordAttack.asset new file mode 100644 index 0000000..ccb7d74 --- /dev/null +++ b/Assets/05_Data/Attack/SwordAttack.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba2b26e371f27c9648d56089a4e90e73af2853abb74367fb877137bae910bd67 +size 2983 diff --git a/Assets/05_Data/Attack/SwordAttack.asset.meta b/Assets/05_Data/Attack/SwordAttack.asset.meta new file mode 100644 index 0000000..b3f8907 --- /dev/null +++ b/Assets/05_Data/Attack/SwordAttack.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 398ec45e6de980d4abbf52c2232304f2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/05_Data/Attack/SwordStandingSlash.asset b/Assets/05_Data/Attack/SwordStandingSlash.asset new file mode 100644 index 0000000..5b0844e --- /dev/null +++ b/Assets/05_Data/Attack/SwordStandingSlash.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ebc178d4f00bf3444f9be6b4d01db149385174de6fc5d3fdf3be2dd34455344 +size 3004 diff --git a/Assets/05_Data/Attack/SwordStandingSlash.asset.meta b/Assets/05_Data/Attack/SwordStandingSlash.asset.meta new file mode 100644 index 0000000..c93891b --- /dev/null +++ b/Assets/05_Data/Attack/SwordStandingSlash.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 45d5830bf6a792046b8d67506bd32186 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/05_Data/Combo/Combo_GunFire.asset b/Assets/05_Data/Combo/Combo_GunFire.asset new file mode 100644 index 0000000..7ddc9df --- /dev/null +++ b/Assets/05_Data/Combo/Combo_GunFire.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fdde1439d248d1b24b895290c2b9cff9b7d147416d240c7c814f5cf206e4971 +size 658 diff --git a/Assets/05_Data/Combo/Combo_GunFire.asset.meta b/Assets/05_Data/Combo/Combo_GunFire.asset.meta new file mode 100644 index 0000000..bf06c9e --- /dev/null +++ b/Assets/05_Data/Combo/Combo_GunFire.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eb35a5acd9f93624c96abc0489c9a707 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/05_Data/Combo/Combo_StandingSwordAttack.asset b/Assets/05_Data/Combo/Combo_StandingSwordAttack.asset new file mode 100644 index 0000000..4d02d96 --- /dev/null +++ b/Assets/05_Data/Combo/Combo_StandingSwordAttack.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79c874c4d1a158ffd6a8f9617e70ad3ff5b348312f8c6a0ef39ab77f7b27b26b +size 731 diff --git a/Assets/05_Data/Combo/Combo_StandingSwordAttack.asset.meta b/Assets/05_Data/Combo/Combo_StandingSwordAttack.asset.meta new file mode 100644 index 0000000..6edbe86 --- /dev/null +++ b/Assets/05_Data/Combo/Combo_StandingSwordAttack.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1a6a2d876e0f2d844ae8e34bec9c86c4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/05_Data/Combo/Combo_SwordAttack.asset b/Assets/05_Data/Combo/Combo_SwordAttack.asset new file mode 100644 index 0000000..537831b --- /dev/null +++ b/Assets/05_Data/Combo/Combo_SwordAttack.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fbcd18bf41099c170e5020a5a1af9595be3d5e0fd2afe1635ec91fa0a307c98 +size 577 diff --git a/Assets/05_Data/Combo/Combo_SwordAttack.asset.meta b/Assets/05_Data/Combo/Combo_SwordAttack.asset.meta new file mode 100644 index 0000000..bf41ef5 --- /dev/null +++ b/Assets/05_Data/Combo/Combo_SwordAttack.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 370b063234ad132409fb58d29fd6bb0f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/05_Data/Weapon.meta b/Assets/05_Data/Weapon.meta new file mode 100644 index 0000000..d1b9890 --- /dev/null +++ b/Assets/05_Data/Weapon.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 246c57b7e3084d84fb08e7d64d839cf9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/05_Data/Weapon/Gun.asset b/Assets/05_Data/Weapon/Gun.asset new file mode 100644 index 0000000..705225f --- /dev/null +++ b/Assets/05_Data/Weapon/Gun.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be6ea4da169b20d4fc66d82a4b61b9c58893d604218d93e97ff425952a6beec7 +size 676 diff --git a/Assets/05_Data/Weapon/Gun.asset.meta b/Assets/05_Data/Weapon/Gun.asset.meta new file mode 100644 index 0000000..75f8ba2 --- /dev/null +++ b/Assets/05_Data/Weapon/Gun.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a7e5b9e3d26bb8e43bc49c3c47e85608 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/05_Data/Weapon/Sword.asset b/Assets/05_Data/Weapon/Sword.asset new file mode 100644 index 0000000..7dad299 --- /dev/null +++ b/Assets/05_Data/Weapon/Sword.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b68a7e74251d91698bfda4d0e4209781d160495d364b7f6cc1a04e2016b7f303 +size 685 diff --git a/Assets/05_Data/Weapon/Sword.asset.meta b/Assets/05_Data/Weapon/Sword.asset.meta new file mode 100644 index 0000000..2b5a95e --- /dev/null +++ b/Assets/05_Data/Weapon/Sword.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0d58fd53c1dbe5e4aaca29e175f95d6f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/06_Textures/Weapons.meta b/Assets/06_Textures/Weapons.meta new file mode 100644 index 0000000..009dc0e --- /dev/null +++ b/Assets/06_Textures/Weapons.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a8db13829d70ef843ad1f57018b89b0c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/06_Textures/Weapons/DotGun.png b/Assets/06_Textures/Weapons/DotGun.png new file mode 100644 index 0000000..20bb04e --- /dev/null +++ b/Assets/06_Textures/Weapons/DotGun.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a27be1fee1dd87a59af88ee5d199435992200f988892e45ee33c312cf944a87b +size 240 diff --git a/Assets/06_Textures/Weapons/DotGun.png.meta b/Assets/06_Textures/Weapons/DotGun.png.meta new file mode 100644 index 0000000..18c4e36 --- /dev/null +++ b/Assets/06_Textures/Weapons/DotGun.png.meta @@ -0,0 +1,169 @@ +fileFormatVersion: 2 +guid: 602cc88075d49f545a5c1bcf95f65236 +TextureImporter: + internalIDToNameTable: + - first: + 213: -8930645337751689443 + second: DotGun_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: DotGun_0 + rect: + serializedVersion: 2 + x: 6 + y: 2 + width: 19 + height: 24 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: d17ef44c169ff0480800000000000000 + internalID: -8930645337751689443 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + DotGun_0: -8930645337751689443 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/06_Textures/Weapons/DotSword.png b/Assets/06_Textures/Weapons/DotSword.png new file mode 100644 index 0000000..7235d47 --- /dev/null +++ b/Assets/06_Textures/Weapons/DotSword.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fade26812ddcfe47f115076f590240150d95d1aba647f04bcf554bc56f65f23c +size 287 diff --git a/Assets/06_Textures/Weapons/DotSword.png.meta b/Assets/06_Textures/Weapons/DotSword.png.meta new file mode 100644 index 0000000..61f066b --- /dev/null +++ b/Assets/06_Textures/Weapons/DotSword.png.meta @@ -0,0 +1,169 @@ +fileFormatVersion: 2 +guid: 74358c124c4edfd499a00a236c9c3627 +TextureImporter: + internalIDToNameTable: + - first: + 213: -1919357906424841633 + second: DotSword_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: DotSword_0 + rect: + serializedVersion: 2 + x: 1 + y: 0 + width: 30 + height: 30 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: f5ab5be37221d55e0800000000000000 + internalID: -1919357906424841633 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: + DotSword_0: -1919357906424841633 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: