EerieVillage/Assets/Scripts/Mechanics/MonsterRandomizer.cs

28 lines
1.0 KiB
C#
Raw Normal View History

using UnityEngine;
namespace Platformer.Mechanics
{
/// <summary>
fix(BT12-Dev): 몬스터 종류 random — 6 OverrideController·MonsterRandomizer PD: "몬스터 색을 랜덤으로 하라는 얘기가 아니라 몬스터 종류를 랜덤으로 하라고 했잖아" 자성: 직전 commit 6e774dc에서 PD 의도 오역 — 색 tint 영역. 종류(sprite) random 의도 정합 X. 근본 (MCP 자율 영역): - Enemy.prefab idleFrames 24 sprite (M001~M006 × 4 idle frame) 영역 영역 - Enemy.controller 4 Clip (EnemyIdle·EnemyRun·EnemyHurt·EnemyDeath) - 영역: 6 Idle Clip + 6 OverrideController·EnemyIdle만 override fix: 1. 6 AnimationClip 신규 — M001_Idle ~ M006_Idle.anim - 각 4 sprite keyframe·frameRate 12·loopTime=true - SetObjectReferenceCurve (m_Sprite property) 2. 6 AnimatorOverrideController 신규 — M001 ~ M006.overrideController - runtimeAnimatorController = Enemy.controller - EnemyIdle Clip → M00x_Idle Clip override - EnemyRun·EnemyHurt·EnemyDeath 영역 (영역 sprite·6종 영역 영역 영역) 3. MonsterRandomizer 영역 - overrideControllers[6] 영역 - Awake 영역 random select·animator.runtimeAnimatorController = overrideControllers[idx] - 색 tint 영역 폐기 4. Enemy.prefab MonsterRandomizer.overrideControllers 6 OverrideController 영역 5. Scene 영역 활성 Enemy 16개 SpriteRenderer.color = white (이전 tint 영역) 회귀 영역 X: - Animator (Idle·Run·Hurt·Death) 정합 유지·EnemyIdle만 override - One-Way Platform·Enemy 발판 IgnoreCollision·Player·Camera 영역 영역 X Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 16:37:54 +00:00
/// 몬스터 종류 랜덤 — 6 AnimatorOverrideController random select.
/// PD 지시 (2026-05-11): 몬스터 종류 랜덤 변경.
/// 6종 (M001~M006) Idle Clip override·Animator runtimeAnimatorController random.
/// </summary>
public class MonsterRandomizer : MonoBehaviour
{
fix(BT12-Dev): 몬스터 종류 random — 6 OverrideController·MonsterRandomizer PD: "몬스터 색을 랜덤으로 하라는 얘기가 아니라 몬스터 종류를 랜덤으로 하라고 했잖아" 자성: 직전 commit 6e774dc에서 PD 의도 오역 — 색 tint 영역. 종류(sprite) random 의도 정합 X. 근본 (MCP 자율 영역): - Enemy.prefab idleFrames 24 sprite (M001~M006 × 4 idle frame) 영역 영역 - Enemy.controller 4 Clip (EnemyIdle·EnemyRun·EnemyHurt·EnemyDeath) - 영역: 6 Idle Clip + 6 OverrideController·EnemyIdle만 override fix: 1. 6 AnimationClip 신규 — M001_Idle ~ M006_Idle.anim - 각 4 sprite keyframe·frameRate 12·loopTime=true - SetObjectReferenceCurve (m_Sprite property) 2. 6 AnimatorOverrideController 신규 — M001 ~ M006.overrideController - runtimeAnimatorController = Enemy.controller - EnemyIdle Clip → M00x_Idle Clip override - EnemyRun·EnemyHurt·EnemyDeath 영역 (영역 sprite·6종 영역 영역 영역) 3. MonsterRandomizer 영역 - overrideControllers[6] 영역 - Awake 영역 random select·animator.runtimeAnimatorController = overrideControllers[idx] - 색 tint 영역 폐기 4. Enemy.prefab MonsterRandomizer.overrideControllers 6 OverrideController 영역 5. Scene 영역 활성 Enemy 16개 SpriteRenderer.color = white (이전 tint 영역) 회귀 영역 X: - Animator (Idle·Run·Hurt·Death) 정합 유지·EnemyIdle만 override - One-Way Platform·Enemy 발판 IgnoreCollision·Player·Camera 영역 영역 X Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 16:37:54 +00:00
[Tooltip("이전 호환 — 24 sprite (6종 × 4 frame). Override Controller 신규 영역 후속 폐기 가능.")]
public Sprite[] idleFrames;
fix(BT12-Dev): 몬스터 종류 random — 6 OverrideController·MonsterRandomizer PD: "몬스터 색을 랜덤으로 하라는 얘기가 아니라 몬스터 종류를 랜덤으로 하라고 했잖아" 자성: 직전 commit 6e774dc에서 PD 의도 오역 — 색 tint 영역. 종류(sprite) random 의도 정합 X. 근본 (MCP 자율 영역): - Enemy.prefab idleFrames 24 sprite (M001~M006 × 4 idle frame) 영역 영역 - Enemy.controller 4 Clip (EnemyIdle·EnemyRun·EnemyHurt·EnemyDeath) - 영역: 6 Idle Clip + 6 OverrideController·EnemyIdle만 override fix: 1. 6 AnimationClip 신규 — M001_Idle ~ M006_Idle.anim - 각 4 sprite keyframe·frameRate 12·loopTime=true - SetObjectReferenceCurve (m_Sprite property) 2. 6 AnimatorOverrideController 신규 — M001 ~ M006.overrideController - runtimeAnimatorController = Enemy.controller - EnemyIdle Clip → M00x_Idle Clip override - EnemyRun·EnemyHurt·EnemyDeath 영역 (영역 sprite·6종 영역 영역 영역) 3. MonsterRandomizer 영역 - overrideControllers[6] 영역 - Awake 영역 random select·animator.runtimeAnimatorController = overrideControllers[idx] - 색 tint 영역 폐기 4. Enemy.prefab MonsterRandomizer.overrideControllers 6 OverrideController 영역 5. Scene 영역 활성 Enemy 16개 SpriteRenderer.color = white (이전 tint 영역) 회귀 영역 X: - Animator (Idle·Run·Hurt·Death) 정합 유지·EnemyIdle만 override - One-Way Platform·Enemy 발판 IgnoreCollision·Player·Camera 영역 영역 X Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 16:37:54 +00:00
[Tooltip("6 AnimatorOverrideController (M001~M006).")]
public AnimatorOverrideController[] overrideControllers;
void Awake()
{
fix(BT12-Dev): 몬스터 종류 random — 6 OverrideController·MonsterRandomizer PD: "몬스터 색을 랜덤으로 하라는 얘기가 아니라 몬스터 종류를 랜덤으로 하라고 했잖아" 자성: 직전 commit 6e774dc에서 PD 의도 오역 — 색 tint 영역. 종류(sprite) random 의도 정합 X. 근본 (MCP 자율 영역): - Enemy.prefab idleFrames 24 sprite (M001~M006 × 4 idle frame) 영역 영역 - Enemy.controller 4 Clip (EnemyIdle·EnemyRun·EnemyHurt·EnemyDeath) - 영역: 6 Idle Clip + 6 OverrideController·EnemyIdle만 override fix: 1. 6 AnimationClip 신규 — M001_Idle ~ M006_Idle.anim - 각 4 sprite keyframe·frameRate 12·loopTime=true - SetObjectReferenceCurve (m_Sprite property) 2. 6 AnimatorOverrideController 신규 — M001 ~ M006.overrideController - runtimeAnimatorController = Enemy.controller - EnemyIdle Clip → M00x_Idle Clip override - EnemyRun·EnemyHurt·EnemyDeath 영역 (영역 sprite·6종 영역 영역 영역) 3. MonsterRandomizer 영역 - overrideControllers[6] 영역 - Awake 영역 random select·animator.runtimeAnimatorController = overrideControllers[idx] - 색 tint 영역 폐기 4. Enemy.prefab MonsterRandomizer.overrideControllers 6 OverrideController 영역 5. Scene 영역 활성 Enemy 16개 SpriteRenderer.color = white (이전 tint 영역) 회귀 영역 X: - Animator (Idle·Run·Hurt·Death) 정합 유지·EnemyIdle만 override - One-Way Platform·Enemy 발판 IgnoreCollision·Player·Camera 영역 영역 X Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 16:37:54 +00:00
if (overrideControllers == null || overrideControllers.Length == 0) return;
var anim = GetComponent<Animator>();
if (anim == null) return;
int idx = Random.Range(0, overrideControllers.Length);
anim.runtimeAnimatorController = overrideControllers[idx];
}
}
}