발사대 만들기
Coddy의 Unity 게임: 타워 디펜스 코스 레슨. 25개 중 7번째.
플레이어는 회색 건설 패드를 클릭해 타워를 건설합니다. 클릭은 화면의 한 지점이므로 광선이 됩니다. Camera.main.ScreenPointToRay는 카메라에서 해당 지점을 통과하는 광선을 반환하고, Physics.Raycast는 광선에 처음으로 맞은 콜라이더, 즉 마우스 아래에 있는 콜라이더를 알려 줍니다.
Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue());
if (Physics.Raycast(ray, out RaycastHit hit))
{
Debug.Log("Clicked " + hit.collider.name);
}광선은 지면과 경로, 나무에도 맞습니다. hit.collider.TryGetComponent(out BuildPad pad)는 맞은 대상이 패드인지 확인하므로, 다른 곳을 클릭해도 아무 일도 일어나지 않습니다. 여기서 사용하는 모든 장면은 Input System을 사용하므로 Mouse.current가 마우스 입력을 읽습니다(using UnityEngine.InputSystem;).
챌린지
중급패드를 클릭해 그 위에 화살 타워를 건설하세요.
BuildPad에public Tower tower;를 추가하세요.BuildManager에[SerializeField] private Tower towerPrefab;를 추가하세요.Update에서Mouse.current.leftButton.wasPressedThisFrame일 때 마우스 위치를 통과하는 광선을 쏘세요.- 광선이
tower가 null인BuildPad에 맞으면pad.tower = Instantiate(towerPrefab, pad.transform.position, Quaternion.identity);로 설정하세요.
‘플레이’를 누르고 패드를 클릭하세요. 각 패드 위에 타워 하나씩 세워집니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
// 나중에 구현: 타워를 배치하기 위한 건설 패드 클릭 기능, 상점, 타워 패널.
public class BuildManager : MonoBehaviour
{
}
Unity 게임: 타워 디펜스의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드