대포 사거리
Coddy Unity 여정의 물리와 게임플레이 섹션에 포함된 레슨. 71개 중 66번째.
사격장의 한쪽 끝에 대포가 있고, 세 개의 표적이 서로 다른 거리에 있는 사격장을 좌우로 미끄러지듯 움직입니다. 각 거리에 도달하도록 포신을 위아래로 기울이고, 표적이 사선에 들어오는 순간에 맞춰 발사합니다. 표적에 맞은 포탄은 표적을 쓰러뜨리고 소모됩니다. 그 밖에 표적에 부딪히는 물체는 표적을 건드리지 않습니다. 표적은 키네마틱 바디이므로 포탄이 맞아도 밀리지 않으며, 대포에는 포탄이 다섯 개 있습니다.
스크립트 두 개를 작성하세요. Barrel에는 Cannon을, 각 표적에는 Target을 적용하세요.
챌린지
어려움대포를 작성하세요. 조준한 다음 공 5개를 발사합니다.
Update()에서Input.GetAxisRaw("Vertical") * turnSpeed * Time.deltaTime를angle에 더하고, 값을 10에서 60 사이로 제한한 다음transform.rotation = Quaternion.Euler(-angle, 0f, 0f);로 설정하세요.balls > 0인 동안 Space 키를 누르면transform.position + transform.forward위치에ballPrefab을 생성하고AddForce(transform.forward * power, ForceMode.Impulse)를 적용하세요.balls에서 1을 빼고"Balls left: " + balls를 로그로 출력하세요.
‘플레이’를 누르고 발사하세요. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
public class Cannon : MonoBehaviour
{
[SerializeField] private Rigidbody ballPrefab;
[SerializeField] private float angle = 30f;
[SerializeField] private float turnSpeed = 40f;
[SerializeField] private float power = 30f;
[SerializeField] private int balls = 5;
void Update()
{
// 위쪽 및 아래쪽 화살표 키로 조준하고, Space로 발사
}
}
물리와 게임플레이의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드