feat(BT12-Dev): MonsterRandomizer 6종 sprite + WallMask Layer 16 (Layer 0 Level Tilemap 영역 영역 거리 X 정정)

This commit is contained in:
깃 관리자 2026-05-10 17:40:06 +09:00
parent 72e033da5a
commit dd6ab3f8f1
3 changed files with 56 additions and 4 deletions

View File

@ -17,6 +17,7 @@ GameObject:
- component: {fileID: 772289407653213039}
- component: {fileID: 5843668731025413174}
- component: {fileID: 7700000000000000002}
- component: {fileID: 3839436596391012912}
m_Layer: 14
m_Name: Enemy
m_TagString: Untagged
@ -348,3 +349,22 @@ MonoBehaviour:
invulnerableDuration: 0.5
resurrectInvulnerableDuration: 2
canResurrect: 0
--- !u!114 &3839436596391012912
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1661912868639658944}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f74e42a58e48af646a73723847df5633, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Platformer.Mechanics.MonsterRandomizer
idleSprites:
- {fileID: -7548370174848201806, guid: f7b7e5d5d35e8ea4a9574fc970089486, type: 3}
- {fileID: 4852648563935847630, guid: f8f1bd54f70dc914f9ff6999cff72846, type: 3}
- {fileID: -480068022978346209, guid: 2cd59e341ddcef747b2fdeed0e184687, type: 3}
- {fileID: 1142325901465378314, guid: 601020362ae2a214298ee67b288426c6, type: 3}
- {fileID: 3001420397446177360, guid: f2ccd91debeaa624bb282fbaa4d0153b, type: 3}
- {fileID: 5433026174052882790, guid: 115d57f5258ccb74f86354a2cd28045d, type: 3}

View File

@ -0,0 +1,33 @@
using UnityEngine;
namespace Platformer.Mechanics
{
/// <summary>
/// 몬스터 종류 랜덤 영역. Awake 영역 6 종 (M001~M006) 영역 영역 idle sprite 영역 random 적용.
/// PD 지시 (2026-05-10): "몬스터 종류 다양하게 반영".
/// Animator 영역 영역 — sprite 자동 영역 영역 영역 영역 — Animator 영역 영역 (death animation 영역 영역 영역 영역 후속 영역).
/// </summary>
public class MonsterRandomizer : MonoBehaviour
{
[Tooltip("M001~M006 idle sprite 영역 (Inspector 영역 영역 영역 영역·Awake 영역 1 영역 random 영역)")]
public Sprite[] idleSprites;
void Awake()
{
if (idleSprites == null || idleSprites.Length == 0)
{
idleSprites = Resources.LoadAll<Sprite>("Monsters");
if (idleSprites == null || idleSprites.Length == 0) return;
}
var sr = GetComponent<SpriteRenderer>();
if (sr == null) return;
var anim = GetComponent<Animator>();
if (anim != null) anim.enabled = false; // sprite 자동 영역 영역
var pick = idleSprites[Random.Range(0, idleSprites.Length)];
if (pick != null) sr.sprite = pick;
}
}
}

View File

@ -59,10 +59,9 @@ namespace EerieVillage.Skills.Effectors
Invoke(nameof(SelfDestruct), _lifetime);
}
// BT12-Dev 2026-05-10 (PD #2 fix) — Wall Layer Mask (Layer 0 Default·Ground + Layer 16 Foreground·발판)
// Tilemap = Static collider·Projectile = Trigger·둘 다 Rigidbody2D 부재 → OnTriggerEnter2D 발화 X 영역 영역.
// → Update 영역 Physics2D.OverlapPoint 영역 Wall Layer 영역 영역 영역 SelfDestruct (영역 영역 영역 영역).
protected static readonly int WallLayerMask = (1 << 0) | (1 << 16);
// BT12-Dev 2026-05-10 — Wall Layer Mask. Layer 0 (Default) 영역 Level Tilemap (지면 영역) + Player 영역 영역 영역 → 영역 영역 영역.
// Layer 16 (Foreground·발판) 영역만 Wall 영역 영역.
protected static readonly int WallLayerMask = (1 << 16);
protected virtual void Update()
{