728x90
반응형
이번 포스트에서는 단검 투척 스킬에서 단검을 위한 스크립트를 구현해보겠습니다.
1) SkillThrowingSwordController
public class SkillThrowingSwordController : MonoBehaviour
{
private Animator _animator;
private Rigidbody2D _rigidBody2D;
private CircleCollider2D _circleCollider2D;
private PlayerController _playerController;
private void Awake()
{
_animator = GetComponentInChildren<Animator>();
_rigidBody2D = GetComponent<Rigidbody2D>();
_circleCollider2D = GetComponent<CircleCollider2D>();
}
public void SetUpSword(Vector2 dir, float gravityScale)
{
_rigidBody2D.velocity = dir;
_rigidBody2D.gravityScale = gravityScale;
}
}
단검 투척 스킬의 동작을 정의해놓은 클래스 SkillThrowingSwordController를 위와 같이 구성했습니다.
우선 Awake에서는 애니메이터와 RigidBody2D, CircleCollider2D 컴포넌트를 가져오게 됩니다.
SetupSword의 경우, Instantiate로 생성하는 단검 프리팹 인스턴스의 물리 설정을 진행합니다.
2) SkillThrowingSword
public class SkillThrowingSword : SkillTemplate
{
[Header("Skill Info")]
[SerializeField]
private GameObject _swordPrefab;
[SerializeField]
private Vector2 _launchDir;
[SerializeField]
private float _swordGravity;
public void CreateSword()
{
GameObject newSword = Instantiate(
_swordPrefab,
_playerController.transform.position,
transform.rotation
);
SkillThrowingSwordController _throwingSwordController = newSword.GetComponent<SkillThrowingSwordController>();
_throwingSwordController.SetUpSword(_launchDir, _swordGravity);
}
}
싱글톤으로 동작하는 SkillManager의 컴포넌트로서 사용하는
단검 투척 스킬 그 자체인 SkillThrowingSword의 구성은 위와 같습니다.
SerializedField로 선언된 프로퍼티들은 각각
인스턴스들을 생성할 프리팹, 단검이 날아갈 위치, 단검이 가질 중력의 크기를 결정합니다.
메서드 CreateSword는 프로퍼티로 설정한 수치 + 플레이어의 위치에서
단검 프리팹의 인스턴스를 생성합니다.
또한 생성된 프리팹 인스턴스로부터 SkillThrowingSwordController 컴포넌트를 가져와
SetupSword를 수행하여 물리 설정도 완료합니다.
3) SkillManager
public class SkillManager : MonoBehaviour
{
public static SkillManager _skillManagerInstance;
// SkillManager는 스킬을 수행하는 주체이므로, 각 스킬에 대해 알고 있어야 함
.
.
.
public SkillThrowingSword _skillThrowingSword { get; private set; }
.
.
.
// 스킬을 가져와서 설정
private void Start()
{
.
.
.
_skillThrowingSword = GetComponent<SkillThrowingSword>();
}
}
SkillManager에 컴포넌트로 등록한 SkillThrowingSword를 사용할 수 있게 로직을 일부 추가하였습니다.
실제 설정화면은 다음과 같습니다.
4) 유니티 에디터
최종 실행 결과는 다음과 같습니다.
728x90
반응형
'유니티 > 게임 프로젝트' 카테고리의 다른 글
2D RPG - (15 - 4) 단검 투척 스킬 구현_04 (0) | 2025.01.29 |
---|---|
2D RPG - (15 - 3) 단검 투척 스킬 구현_03 (0) | 2025.01.28 |
2D RPG - (15 - 1) 단검 투척 스킬 구현_01 (0) | 2025.01.27 |
2D RPG - (14) 분신술 스킬 구현 (0) | 2025.01.07 |
2D RPG - (13) 스킬 시스템 구현을 위한 사전설정 (0) | 2025.01.06 |