[TIL] Ability 구현

현빈·2025년 4월 16일

적이나 기타 오브젝트와 상호작용하면 플레이어와 상호작용 객체가 동시에 어떤 로직을 실행시켜야 할 때, 플레이어와 적 내부에 직접적인 로직을 넣지 않고 방문자 객체를 구현해 방문자 내에서 해당하는 타입에 따라 다른 객체 모델(적, 상호작용 오브젝트) 을 수정하는 로직을 방문자 내에서 구현한다.

public interface IVisitor
{
void Visit(T visitable) where T : IVisitable;
void Leave(T visitable) where T : IVisitable;
}

public interface IVisitable
{
void Accept(IVisitor visitor);
void Cancel(IVisitor visitor);
}

구현한 Ability 클래스로 방문을 받을 객체(몬스터, 오브젝트)와 상호작용이 가능하다

public override void Visit<T>(T visitable)
{
    if (owner == null || visitable == null)
        return;

    if (visitable is Enemy enemy)
    {
        var temp = owner.transform.position;

        owner.SetPosition(enemy.transform.position);
        enemy.SetPosition(temp);
    }
}

2개의 댓글

comment-user-thumbnail
2025년 4월 16일

나 감동했잖아,,늘었어,,,이 사람 성장하는구나!!! 나 내일도 기대해도 되는거지??순찌 화이팅!!

답글 달기
comment-user-thumbnail
2025년 4월 16일

나날이 성장하는 모습 보기 좋습니다

답글 달기