발사
Coddy의 Unity 게임: 벽돌 깨기 코스 레슨. 19개 중 2번째.
플레이어가 공을 발사할 때까지 공은 패들 위에서 기다립니다. 그때까지 Update()는 매 프레임 공을 패들 위에 놓으므로, 공은 패들이 움직이는 곳으로 따라가고 bool은 공이 날아갔는지 기억합니다:
void Update()
{
if (launched) return;
transform.position = paddle.position + Vector3.up * 0.5f;
}공의 Rigidbody에는 중력이 없으므로, 한 번 설정한 속도는 공을 계속 직선으로 날아가게 합니다. wasPressedThisFrame은 키를 누른 프레임에만 true이므로 Update()에서 읽으세요. 어느 방향으로든 정확한 속도로 날아가게 하려면 .normalized를 사용해 방향의 길이를 1단위로 만든 다음 곱하세요. new Vector3(3f, 4f, 0f).normalized * 10f는 초당 10단위의 속도로 날아갑니다.
챌린지
쉬움공은 스페이스바를 눌러 발사할 때까지 패들 위에 놓여 있습니다.
Ball에bool launched;와public void Launch(Vector3 direction)을 추가하세요:launched = true;와rb.linearVelocity = direction.normalized * speed;Update()에서 발사된 상태라면 반환하고, 그렇지 않으면 공을paddle.position + Vector3.up * 0.5f위치에 놓으세요.- 스페이스바를 눌렀을 때
wasPressedThisFrame,Launch(new Vector3(0.3f, 1f, 0f))를 호출하세요.
‘플레이’를 누르고 패들을 움직인 다음 스페이스바를 누르세요. 공이 위로 날아가 첫 번째 벽에서 멈춥니다(다음에는 튕기게 됩니다). 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
using UnityEngine.InputSystem;
public class Ball : MonoBehaviour
{
public Transform paddle;
public float speed = 9f;
Rigidbody rb;
void Awake()
{
rb = GetComponent<Rigidbody>();
}
// 다음: Space를 눌러 발사할 때까지 공은 패들 위에 놓여 있습니다.
}
Unity 게임: 벽돌 깨기의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드