Menu
CoddyTech

패들

Coddy의 Unity 게임: 벽돌 깨기 코스 레슨. 19개 중 1번째.

이 과정에서는 3D 벽돌 깨기를 만들며, 한 레슨에서 패들, 튀는 공, 벽돌 벽, 목숨, 레벨, 파워업을 다룹니다. 모든 것은 z가 0인 x-y 평면에서 움직입니다. Paddle, Ball, Brick, GameManager, PowerUp 스크립트는 현재 빈 틀입니다. ‘플레이’를 누르면 게임이 실행되고, ‘확인’을 누르면 코드가 채점됩니다.

패들에는 키네마틱 Rigidbody가 있으며, FixedUpdate()에서 rb.MovePosition으로 이동하므로 물리 시스템이 패들의 움직임을 감지합니다. 키네마틱 바디는 벽을 통과하므로 스크립트에서 패들이 벽 안으로 들어가지 않게 합니다. 패들의 중심을 벽 위치에서 제한하면 패들의 절반이 벽 안에 남습니다. 따라서 제한값은 벽 위치에서 너비의 절반을 뺀 값이어야 합니다. 벽이 -6과 6에 있고 패들의 너비가 2라면 다음과 같습니다.

float half = 2f / 2f;
target.x = Mathf.Clamp(target.x, -6f + half, 6f - half);
rb.MovePosition(target);

중심은 -5와 5 사이에 머무르므로 양 끝이 벽에 정확히 닿습니다. 매 단계마다 transform.localScale.x에서 너비를 읽으면 패들이 커져도 제한값이 올바르게 유지됩니다.

challenge icon

챌린지

쉬움

벽 사이에서 패들을 움직이세요.

  1. Paddle의 FixedUpdate()에서 왼쪽 화살표 키나 A 키를 누르고 있는 동안 float input을 -1로, 오른쪽 화살표 키나 D 키를 누르고 있는 동안 1로, 그 외에는 0으로 설정하세요.
  2. Vector3 target = rb.position + Vector3.right * input * speed * Time.fixedDeltaTime;를 계산하세요.
  3. float half = transform.localScale.x / 2f;를 사용해 target.x를 -wallX + half와 wallX - half 사이로 제한한 다음 rb.MovePosition(target);을 실행하세요.

‘플레이’를 눌러 양쪽 벽까지 움직여 보세요. 패들이 각 벽에서 멈춥니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;
using UnityEngine.InputSystem;

public class Paddle : MonoBehaviour
{
    public float speed = 14f;
    public float wallX = 8f;   // 양쪽 벽의 안쪽 면은 -wallX와 wallX에 있습니다

    Rigidbody rb;

    void Awake()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // 화살표 키 또는 A와 D로 움직이고, 벽 사이를 벗어나지 않도록 합니다.
    }
}

Unity 게임: 벽돌 깨기의 모든 레슨

직접 연습해 보세요: Unity 플레이그라운드