fix(BT12-Dev): MonsterRandomizer Animator 활성 + Enemy patrol 5~10 unit
PD: "이동·죽음·히트 애니메이션 재생 X → 잘 나오도록 수정"
PD: "맵 전체 patrol → 자신 주위 적절 범위 patrol"
근본 (MCP 자율 실측):
1. 애니메이션 — MonsterRandomizer.Awake line 28 `anim.enabled = false`
- Animator 비활성 → AnimationController.SetFloat("velocityX", ...) 영향 X
- Idle/Run/Hurt/Death state 영역 영역 X·sprite 수동 idle만
- fix: anim.enabled=false 제거·sprite 수동 영역 폐기·Animator Clip 정합
- Enemy.controller transition·parameter 정합 (직전 entry 7 fix 영역)
2. patrol 범위 — Enemy.prefab patrolMin=50·Max=75 (맵 전체)
- Camera ortho 5.0·camWidth 17.78·주위 영역 영역 5~10 unit 정합
- fix: patrolMin=5·Max=10 (Enemy.prefab 영역·Scene 16 instance 자동 반영)
회귀 영역 (Minor 사전 고지):
- 6종 random idle 영역 영역 영역 X — 모든 Enemy 동일 외형
- 6종 random visual 다양성 영역 후속 안건 (Sprite 동적 randomization·6 controller·SubStateMachine)·본 fix 영역 외
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
6b1730bd45
commit
c18562bf11
|
|
@ -222,8 +222,8 @@ MonoBehaviour:
|
|||
hitRangeX: 0.7
|
||||
hitRangeY: 1
|
||||
stompMinDy: 0.1
|
||||
patrolMinRange: 50
|
||||
patrolMaxRange: 75
|
||||
patrolMinRange: 5
|
||||
patrolMaxRange: 10
|
||||
patrolArriveThreshold: 0.5
|
||||
cliffCheckDistance: 1
|
||||
cliffCheckDepth: 2
|
||||
|
|
@ -386,4 +386,3 @@ MonoBehaviour:
|
|||
- {fileID: 8917375057226933945, guid: 5445e614d5225714e9550e08f8bccec1, type: 3}
|
||||
- {fileID: -4095915237629478068, guid: 1f8ec15a958211a478994dd27d1c879b, type: 3}
|
||||
- {fileID: 2697896165774990149, guid: 611097d2df9e43b40bec486f141c7ae9, type: 3}
|
||||
frameInterval: 0.15
|
||||
|
|
|
|||
|
|
@ -3,55 +3,21 @@ using UnityEngine;
|
|||
namespace Platformer.Mechanics
|
||||
{
|
||||
/// <summary>
|
||||
/// 몬스터 종류 랜덤 영역 + 수동 idle animation.
|
||||
/// PD 지시 (2026-05-10): 6 종 (M001~M006) random + animation 영역.
|
||||
/// Animator 영역 영역 (sprite 자동 영역 영역 X) — 4 frame idle loop 수동 영역.
|
||||
/// 몬스터 종류 랜덤 영역 — Animator 정합 유지.
|
||||
/// PD 지시 (2026-05-10): Animator 영역 (Idle·Run·Hurt·Death state) 영역 → Animator 활성·sprite 수동 영역 X.
|
||||
/// 6종 random visual 다양성 영역 후속 안건 (Sprite 동적 randomization·6 controller·SubStateMachine).
|
||||
/// </summary>
|
||||
public class MonsterRandomizer : MonoBehaviour
|
||||
{
|
||||
[Tooltip("6 종 × 4 frame idle sprite (24 sprite·6 group). Inspector 영역 영역 — 0~3=M001·4~7=M002·...")]
|
||||
[Tooltip("6 종 × 4 frame idle sprite (24 sprite·6 group). Awake 시 random group 영역 첫 sprite 영역 영역 영역.")]
|
||||
public Sprite[] idleFrames;
|
||||
|
||||
[Tooltip("frame 영역 (초). 0.15s = 1 frame")]
|
||||
public float frameInterval = 0.15f;
|
||||
|
||||
const int FramesPerMonster = 4;
|
||||
int _monsterIdx;
|
||||
int _frame;
|
||||
float _elapsed;
|
||||
SpriteRenderer _sr;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
_sr = GetComponent<SpriteRenderer>();
|
||||
var anim = GetComponent<Animator>();
|
||||
if (anim != null) anim.enabled = false; // sprite 자동 영역 영역
|
||||
|
||||
int monsters = (idleFrames != null) ? idleFrames.Length / FramesPerMonster : 0;
|
||||
if (monsters <= 0) return;
|
||||
_monsterIdx = Random.Range(0, monsters);
|
||||
_frame = 0;
|
||||
_elapsed = 0f;
|
||||
ApplyFrame();
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (_sr == null || idleFrames == null) return;
|
||||
_elapsed += Time.deltaTime;
|
||||
if (_elapsed >= frameInterval)
|
||||
{
|
||||
_elapsed = 0f;
|
||||
_frame = (_frame + 1) % FramesPerMonster;
|
||||
ApplyFrame();
|
||||
}
|
||||
}
|
||||
|
||||
void ApplyFrame()
|
||||
{
|
||||
int idx = _monsterIdx * FramesPerMonster + _frame;
|
||||
if (idx >= 0 && idx < idleFrames.Length && idleFrames[idx] != null)
|
||||
_sr.sprite = idleFrames[idx];
|
||||
// BT12-Dev 2026-05-10 — Animator 활성 유지 (이전 anim.enabled=false 제거·근본).
|
||||
// sprite 수동 영역 폐기·Animator Clip (EnemyIdle·EnemyRun·EnemyHurt·EnemyDeath) 영역 정합.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue