private void CharStartInteration() { // 처음 앞의 대상이 무슨 오브젝트인지 판단. target = CheckTarget(); csObjectInteraction component = null; // 앞에 오브젝트가 있으면, 오브젝트의 csObjectInteraction 인터페이스를 GetComponent함. if (target != null) { component = target.GetComponent(typeof(csObjectInteraction)) as csObjectInteraction; } // 만약 앞의 오브젝트가 상자라면 Interaction 메소드만 호출함. if (target != null && target.CompareTag("Crate")) { if (component != null) { component.Interaction(gameObject); } } // 그 외의 오브젝트라면 현재 지정된 Animator의 Lumbering 애니메이션을 활성화한 후 코루틴 CancelLumber를 호출함. // 만약 아무 오브젝트도 없을 시 애니메이션만 실행 else { thirdAnim.CrossFade("Lumbering", 0.3f); charStats.isStop = true; StartCoroutine("CancelLumber"); } }
// Lumbering 애니메이션 중 이벤트로 들어갈 메소드로 상호작용 타겟이 지형이 아니라면 상황에 맞는 이펙트와 메소드를 호출한다. private void ActInteration() { // 판단된 오브젝트가 지형이 아닌 다른 오브젝트인 경우 if (target != null && !(target.CompareTag("Ground"))) { csObjectInteraction component = target.GetComponent(typeof(csObjectInteraction)) as csObjectInteraction; // 해당 오브젝트의 Interaction 메소드를 호출 component.Interaction(gameObject); // 몬스터의 경우 attackPS 이펙트 재생 if (target.CompareTag("Monster")) { attackPS.Stop(); attackPS.Play(); } // 그 외의 경우 takePS 이펙트 재생 else if (target.CompareTag("Resource")) { takePS.Stop(); takePS.Play(); } } }