원클릭으로
animation
Unity animation system — Animator controllers, layers, blend trees, state machine behaviors, root motion, animation events, Timeline.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Unity animation system — Animator controllers, layers, blend trees, state machine behaviors, root motion, animation events, Timeline.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
DOTween animation library — sequence composition, tween lifecycle, easing, kill strategies. CRITICAL: Always kill tweens in OnDestroy to prevent leaks and errors.
Dialogue tree patterns — ScriptableObject graph, node types (text, choice, condition, event), typewriter effect, localization-ready. Load when implementing NPC conversations.
Generic state machine patterns — IState interface, StateMachine<T>, game state management (menu/gameplay/pause), enemy AI states, hierarchical FSM. Load when implementing state-driven behavior.
2D platformer architecture — tight controls (coyote time, input buffer, variable jump), level design patterns, collectibles, checkpoints, hazards, boss patterns.
Unity physics — non-allocating queries, collision layers, FixedUpdate discipline, continuous collision detection, character controllers, joints.
How the atomic instinct learning system works — observations, distillation, confidence scoring, project vs global scope, and promotion/evolution workflows.
| name | animation |
| description | Unity animation system — Animator controllers, layers, blend trees, state machine behaviors, root motion, animation events, Timeline. |
| globs | ["**/*.controller","**/*Anim*.cs","**/*.anim"] |
// Cache hash IDs — NEVER use string version in Update
private static readonly int SpeedHash = Animator.StringToHash("Speed");
private static readonly int JumpHash = Animator.StringToHash("Jump");
private static readonly int IsGroundedHash = Animator.StringToHash("IsGrounded");
private static readonly int AttackHash = Animator.StringToHash("Attack");
private void Update()
{
_animator.SetFloat(SpeedHash, _currentSpeed);
_animator.SetBool(IsGroundedHash, _isGrounded);
}
// Triggers: fire once, auto-reset
public void Attack() => _animator.SetTrigger(AttackHash);
1D: Speed parameter → walk/run blend 2D Simple Directional: X/Y input → directional movement (forward, back, strafe) 2D Freeform: more flexible placement of motion clips
public sealed class AttackStateBehavior : StateMachineBehaviour
{
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
// Enable hitbox
animator.GetComponent<CombatSystem>().EnableHitbox();
}
public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
// Disable hitbox
animator.GetComponent<CombatSystem>().DisableHitbox();
}
}
Apply Root Motion on AnimatorOnAnimatorMove() for custom control:private void OnAnimatorMove()
{
// Use animation's root motion for position
Vector3 deltaPosition = _animator.deltaPosition;
transform.position += deltaPosition;
// Use animation's rotation
transform.rotation *= _animator.deltaRotation;
}
Call methods from specific frames in animation clips:
// Called from animation event on frame 12
public void OnFootstep()
{
_audioSource.PlayOneShot(_footstepClip);
}
public void OnAttackHit()
{
// Check hitbox collisions at this exact frame
}
private void OnAnimatorIK(int layerIndex)
{
if (_lookTarget != null)
{
_animator.SetLookAtWeight(1f, 0.3f, 0.6f, 1f);
_animator.SetLookAtPosition(_lookTarget.position);
}
// Foot IK for uneven terrain
_animator.SetIKPositionWeight(AvatarIKGoal.LeftFoot, 1f);
_animator.SetIKPosition(AvatarIKGoal.LeftFoot, _leftFootTarget);
}
PlayableAsset + PlayableBehaviour