Unity_2기 내일배움캠프 TIL

Unity_2기 7주차 (231218)

잼잼재미 2023. 12. 18. 21:38

오늘도 유니티 팀프로젝트를 진행했다. 지난주에 구현한 ItemSkill을 보완하고, 추가로 여러가지 Item을 구현했다. 그리고 팀원이 구현한 Player와 통합하였다.

 

 

구현 내용


 

 

Skill 스크립트

public SkillItemData SkillData;

private SpriteRenderer _spriteRenderer;
private Rigidbody2D _rigidbody;

private void Awake()
{
    _spriteRenderer = GetComponent<SpriteRenderer>();
    _rigidbody = GetComponent<Rigidbody2D>();
}

private void Start()
{
    // 플레이어 스테미너 감소
    Debug.Log("스테미나 " + SkillData.Stamina + " 감소");
}

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.tag == "Enemy")
    {
        int dir = (_rigidbody.velocity.x > 0) ? 1 : -1;
        Destroy(gameObject);          

        Instantiate(SkillData.SkillEffect, gameObject.transform.position + new Vector3(SkillData.SkillPosition.x * dir, SkillData.SkillPosition.y, SkillData.SkillPosition.z), Quaternion.identity);

        // TODO
        Debug.Log("적 Hp " + SkillData.Atk + " 감소");
    }
    else if(collision.tag == "Obstacle")
    {
        int dir = (_rigidbody.velocity.x > 0) ? 1 : -1;
        Destroy(gameObject);

        Instantiate(SkillData.SkillMissEffect, gameObject.transform.position + new Vector3(SkillData.SkillPosition.x * dir, SkillData.SkillPosition.y, SkillData.SkillPosition.z), Quaternion.identity);
    }

}

public void SkillShoot(Vector2 direction)
{
    if (direction.x < 0)
    {
        if (_spriteRenderer.flipX == true) _spriteRenderer.flipX = false;
        else _spriteRenderer.flipX = true;
    }

    _rigidbody.velocity = direction * SkillData.SkillSpeed;
}

 

추가적으로 Skill이 충돌할 때, Skill이 파괴되고, Effect 효과가 생기도록 구현했다. Effect 구현은 적과 벽을 충돌할 때, 다른 Effect가 생기도록 구현했다. Player가 바라보는 방향을 direction으로 받아와서 Skill 프리팹의 flipX를 변경했다.

 

 

SkillItemData 스크립트

[Header("Stats")]
public float Atk;
public float Stamina;
public float CoolTime;
public float SkillSpeed;

[Header("Prefabs")]
public GameObject SkillPrefab;
public GameObject SkillEffect;
public GameObject SkillMissEffect;
public Sprite SkillIcon;

[Header("ETC")]
public Vector3 SkillPosition;

 

ScriptalbeObject에 SkillEffect와 SkillMissEffect를 추가해서 각각 프리팹을 추가했다. 추가로 Vector3 값도 추가해서 각각의 스킬 충돌 시, Effect가 생성되는 위치를 조정했다.

 

 

오늘의 회고


생각보다 조원이 구현한 Player와 통합하는 것이 꽤 오래걸렸다. 그리고 추가적인 근거리 스킬을 구현하려고 했으나, ScripableObject를 원거리스킬 위주로 구현해버려서 근거리 스킬 구현이 어려웠다. 그래서 게임을 개발하기 전, 확실하게 기획 후, 개발을 하는 것이 중요하다고 느꼈다. 내일은 ScripableObject에 SkillSound를 추가하고, 다른 추가 효과아이템을 구현할 예정이다.