Menu
CoddyTech

복습: 모듈식 포탑

Coddy Unity 여정의 Unity 게임 아키텍처 섹션에 포함된 레슨. 50개 중 5번째.

challenge icon

챌린지

쉬움

부품을 사용해 테스트 사격장의 두 포탑을 만드세요. TurretControl.cs는 이미 좌우 화살표 키로 각 포탑을 회전시키고, Shell.cs는 포탄을 앞으로 날려 보냅니다. 장면에서 Turret1에는 Cannon과 포탄 4개가 든 Ammo가, Turret2에는 TwinCannon과 포탄 3개가 든 Ammo가 제공됩니다. 다음 부품을 작성하세요:

  • Ammo: 공개 int shells와 공개 메서드 bool Take()를 작성하세요. 포탄이 남아 있으면 하나를 사용하고 true를 반환합니다. 포탄이 없으면 객체의 이름과 is empty를 로그에 기록합니다. 예를 들어 Turret2 is empty와 같이 기록한 뒤 false를 반환합니다.
  • Weapon: 항상 Ammo와 함께 사용하는 추상 컴포넌트로, 공개 shellPrefab(GameObject), 공개 float cooldown(Inspector에서 1로 설정), 공개 메서드 Pull()을 작성하세요. 쿨다운 중에 당기면 아무 일도 일어나지 않고 포탄도 사용하지 않습니다. 그렇지 않으면 Take()가 포탄을 내어줄 때 쿨다운이 시작되고 Fire()가 실행됩니다. Fire()는 각 무기에서 작성하는 추상 메서드입니다.
  • Cannon은 포탑 앞 1단위 지점에서 포탄 하나를 발사합니다. TwinCannon은 포탄 하나의 탄약으로 두 발을 발사합니다. 발사 지점에서 왼쪽으로 0.4, 오른쪽으로 0.4 떨어진 위치에서 발사합니다. 포탄은 포탑과 같은 방향(transform.rotation)으로 회전한 채 transform.position + transform.rotation * offset에서 시작합니다. 여기서 offset은 포탑 기준으로 본 위치이며, 예를 들면 new Vector3(0f, 0f, 1f)입니다.
  • TurretControl에서 Space 키를 누르면 포탑이 장착한 Weapon의 방아쇠를 당깁니다.

Play를 눌러 두 포탑을 회전시키고 발사해 탄약을 모두 소진한 다음 Check를 누르세요.

직접 해보기

using UnityEngine;

// 모든 포탑 무기가 공유하는 것.
public class Weapon : MonoBehaviour
{
}

Unity 게임 아키텍처의 모든 레슨