Skip to content

develop Gralic

Yoo Hyeokjin edited this page Jun 28, 2023 · 5 revisions

Gralic

목차

설명

  • 주인공 중심 원 영역을 주기적으로 공격하는 무기이다. 자세한 설명은 마늘에서 알 수 있다.
  • 마늘을 구현할 때는 쿨타임이 지나면 instance를 생성하고 쿨타임이 지나면 instance를 삭제하는 식으로 구현할 것이다.

Script

코드 설명

  • 코드를 보면 알겠지만 Weapon들은 Weapon.cs를 상속받아서 만들었고 해당 Weapon의 스텟을 WeaponTotalStats[((int)Enums.EWeaponStat.원하는 Stat)]으로 가져올 수 있다.
using UnityEngine;

public class Gralic : Weapon
{
    private GameObject mNewObj;     // 생성한 instance를 저장할 변수
    private float mTimer = 0;       // 쿨타임과 지속시간을 체크할 타이머 변수
    private bool mbExist = false;   // 생성되었는지 삭제되었는지 확인할 변수

    private void Update()
    { // Gralic 무기가 Player를 계속 따라 다녀야 하기 때문에 다음과 같이 transform의 position을 계속 Update 해주었다.
        transform.position = GameManager.instance.Player.transform.position + new Vector3(0, 0.5f, 0); 
    }
    public override void Attack() // Weapon에서 생성된 virtual Method를 override 했다.
    {
        GameObject objPre; // SkillFiringSystem에 저장한 Weapon Prefab을 저장할 지역 변수
        if (IsEvoluction())
            objPre = SkillFiringSystem.instance.evolutionWeaponPrefabs[WeaponIndex]; // 진화 Weapon
        else
            objPre = SkillFiringSystem.instance.weaponPrefabs[WeaponIndex];          // 일반 Weapon
        mTimer += Time.deltaTime; // 현재 시간을 지속적으로 Update
        if (mTimer > WeaponTotalStats[((int)Enums.EWeaponStat.Cooldown)]) 
        { // Gralic 쿨타임마다 공격을 하니까 쿨타임마다 생성과 삭제를 반복한다.
            if(!mbExist) // Gralic instance가 존재하지 않다면 
            {
                mNewObj = Instantiate(objPre); // 가져온 Prefab의 instance를 생성
                mNewObj.transform.parent = GameObject.Find("SkillFiringSystem").transform; // SkillFiringSystem의 자식으로 해당 instance를 넣는다.
                mNewObj.transform.position = GameManager.instance.Player.transform.position + new Vector3(0, 0.5f, 0); // Gralic의 초기 위치를 설정한다.
                mbExist = true; // Gralic이 존재함을 저장
            }
            else
            {
                Destroy(mNewObj); // Gralic instance가 존재한다면 해당 instance를 삭제한다.
                mbExist = false; // Gralic이 존재하지 않음을 저장
            }
            mTimer = 0; // 쿨타임 계산을 위해 시간을 초기화
        }
    }
    public override void EvolutionProcess() // 무기 진화시 한 번 호출됨
    {

    }
}

Prefab

다음의 Component를 추가한다.

  • SpriteRenderer
  • Rigidbody2D
  • CircleCollider2D
  • Gralic.cs

다음과 같이 Prefab을 만들어 준다.

image
image

Clone this wiki locally