[Unity][3D-Game] Tower Defense Game (18)

suhan0304·2023년 12월 22일
0
post-thumbnail

강의영상 (20)


개발

Upgraded Missile Turret 제작

Upgraded Laser Beamer 제작

Shop 오브젝트에 적용

업그레이드된 터렛을 Shop의 스크립트의 인스펙터에서 초기화해준다.

이제 실제로 실행해서 업그레이드가 정상적으로 수행되는지 확인해본다.

Sell 기능 구현

이제 Sell 기능을 구현해보자. 기존의 Node.cs에 Sell 기능을 구현하고 NodeUI 스크립트에서 해당 버튼 이벤트를 누를시 Node의 Sell을 호출하도록 구현한다.

TurretBlueprint.cs

public int GetSellAmount()
{
    return cost / 2;
}

Node.cs

public void SellTurret()
{
    PlayerStats.Money += turretBlueprint.GetSellAmount();//판매 가격의 절반을 반환
        
    Destroy(turret);
    turretBlueprint = null;
}

NodeUI.cs

public void Sell()
{
    target.SellTurret();
    BuildManager.instance.DeselectNode();//업그레이드 하면 노드 선택 해제
}

NodeUI 업데이트

NodeUI 오브젝트의 Sell 버튼에서 Sell 가격이 보이도록 다음과 같이 NodeUI 스크립트를 수정한다.

NodeUI.cs

public void SetTarget(Node _target)
{
    target = _target;

    transform.position = target.GetBuildPosition(); // 노드 포지션이 아니라 빌드 포지션을 가져온다
    if (!target.isUpgraded) // 업그레이드 하지 않았다면
    {
        upgradeCost.text = "$" + target.turretBlueprint.cost;
        upgradeButton.interactable = true; //버튼 클릭 활성화
    } 
    else
    {
        upgradeCost.text = "Done";
        upgradeButton.interactable = false; //버튼 클릭 비활성화
    }

    sellAmount.text = "$" + target.turretBlueprint.GetSellAmount();
                   
    ui.SetActive(true); //NodeUI 오브젝트를 활성화
}

Sell Effect 추가

sellEffect를 생성해 준 후에 다음과 같이 Node 스크립트를 수정해준다. sellEffect는 기존의 BuildEffect를 수정해서 사용한다. 또한 포탑이 파괴되는 연출을 주기 위해 기존의 EnemyDeathEffect를 해당 SellEffect 자식 오브젝트로 추가해준다. (이름을 Debris로 수정해서 사용) 이제 속성 값들을 적절히 조절하면서 원하는 이펙트로 만들어준다.

Debris의 재질을 실제 포탑에서 사용중인 재질을 사용해서 포탑이 파괴되는 듯한 효과가 연출되도록 한다.

Node.cs

public void SellTurret()
{
    PlayerStats.Money += turretBlueprint.GetSellAmount();//판매 가격의 절반을 반환

    GameObject effect = (GameObject)Instantiate(buildManager.sellEffect, GetBuildPosition(), Quaternion.identity); // 이펙트 복사해서 생성해주기
    Destroy(effect, 5f); // 생성하고 5초후에 이펙트 오브젝트 삭제

    Destroy(turret);
    turretBlueprint = null;
}

이제 기존에 만둘어둔 SellEffect를 프리팹화 시킨 후에 인스펙터로 초기화 시켜준다.


결과물

profile
Be Honest, Be Harder, Be Stronger

0개의 댓글