타워 선택
Coddy의 Unity 게임: 타워 디펜스 코스 레슨. 25개 중 17번째.
타워를 클릭하면 현재 레벨과 다음 레벨에서 달라지는 점을 보여 주는 패널이 열립니다. 타워를 클릭하면 타워의 자식인 부분 중 하나인 받침대나 머리에 명중하므로, hit.collider.GetComponentInParent<Tower>()를 사용하면 해당 부분이 속한 타워를 찾을 수 있습니다. 명중한 오브젝트에서 시작해 부모 오브젝트를 거슬러 올라갑니다.
패널에는 현재 능력치와 다음 레벨의 능력치가 나란히 표시되므로, 플레이어는 업그레이드로 무엇을 얻는지 확인할 수 있습니다.
towerStatsText.text = "Damage " + data.DamageAt(level) + " > " + data.DamageAt(level + 1);챌린지
중급타워를 클릭해 패널을 여세요.
BuildManager에private Tower selected;를 추가하세요. 타워를 클릭하면 타워가 선택되고, 다른 것을 클릭하면 아무것도 선택되지 않습니다.- 직렬화된
towerPanel(GameObject)과towerNameText,towerStatsText,upgradeLabel(TMP_Text)을 추가하세요. 타워가 선택된 동안에만 패널이 표시됩니다. - 다음 내용을 채우세요:
Arrow level 1, 두 줄로 된Damage 2 > 3및Range 4.5 > 5,Upgrade 40.
‘플레이’를 누르고 타워를 건설한 다음 클릭하세요. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;
using TMPro;
public class BuildManager : MonoBehaviour
{
[SerializeField] private GameManager game;
[SerializeField] private Tower[] shop;
[SerializeField] private Button[] shopButtons;
[SerializeField] private Color chosenColor = new Color(1f, 0.85f, 0.3f);
private Tower chosen;
void Start()
{
for (int i = 0; i < shop.Length; i++)
{
Tower prefab = shop[i];
shopButtons[i].GetComponentInChildren<TMP_Text>().text = prefab.data.towerName + "\n" + prefab.data.cost;
shopButtons[i].onClick.AddListener(() => Choose(prefab));
}
Choose(shop[0]);
}
void Choose(Tower prefab)
{
chosen = prefab;
for (int i = 0; i < shop.Length; i++)
{
shopButtons[i].image.color = shop[i] == chosen ? chosenColor : Color.white;
}
}
void Update()
{
if (!Mouse.current.leftButton.wasPressedThisFrame)
{
return;
}
Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue());
if (Physics.Raycast(ray, out RaycastHit hit) && hit.collider.TryGetComponent(out BuildPad pad))
{
Build(pad);
}
}
void Build(BuildPad pad)
{
if (pad.tower != null)
{
return;
}
if (!game.TrySpend(chosen.data.cost))
{
Debug.Log("Not enough money");
return;
}
pad.tower = Instantiate(chosen, pad.transform.position, Quaternion.identity);
}
}
Unity 게임: 타워 디펜스의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드