Menu
CoddyTech

굴러가는 공

Coddy Unity 여정의 물리와 게임플레이 섹션에 포함된 레슨. 63개 중 27번째.

이 장에서는 Coin Rush라는 작은 게임을 만듭니다. 벽으로 둘러싸인 경기장에서 방향키로 공을 굴리고, 제한 시간이 끝나기 전에 코인을 모읍니다. Unity 프로젝트에서처럼 두 스크립트가 작업을 나누어 맡습니다. Ball은 공을 움직이고 점수와 시간을 관리하며, Coin은 각 코인에 배치됩니다. Coin.cs는 빈 클래스로 시작하고, 다음 레슨에서 내용을 채웁니다.

공은 위치를 지정하는 대신 밀어야 굴러갑니다. AddForce로 공의 Rigidbody를 밀고 회전은 자유롭게 두세요. 힘이 공을 움직이고, 바닥과의 마찰이 공의 아랫부분을 잡아 회전시킵니다. Space 키를 누르고 있는 동안 이 볼링공은 레인을 따라 굴러갑니다.

public float push = 6f;
private Rigidbody rb;

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

void FixedUpdate()
{
    if (Input.GetKey(KeyCode.Space))
    {
        rb.AddForce(Vector3.forward * push);
    }
}

미끄러지지 않고 구르는 공은 각속도가 속도를 반지름으로 나눈 값과 같습니다. 따라서 반지름이 0.5이고 초당 3유닛으로 움직이는 공은 초당 6라디안으로 회전합니다(rb.angularVelocity). 대신 transform.position을 변경하거나 Rigidbody의 Constraints에서 회전을 고정하면, 공은 회전하지 않고 퍽처럼 미끄러집니다. 단색 구체는 어느 쪽이든 똑같이 보입니다. 굴러가는 모습을 확인하려면 게임이 실행되는 동안 Rigidbody의 Info 섹션에서 Angular Velocity를 살펴보세요.

challenge icon

챌린지

중급

공으로 Coin Rush를 시작하세요. Inspector에서 Ball에 force를 10으로 설정합니다.

  • Start()에서 공의 Rigidbody를 rb에 저장합니다.
  • FixedUpdate()에서 방향키를 사용해 공을 밀어 움직입니다. x축에는 Input.GetAxis("Horizontal")을, z축에는 Input.GetAxis("Vertical")을 사용하고, 두 경우 모두 force를 곱합니다.
  • 공이 굴러가도록 회전을 자유롭게 둡니다.

지금은 Coin.cs를 그대로 둡니다. Play를 누르고, 게임을 클릭한 다음 경기장을 돌아다니며 공을 굴린 뒤 Check를 누르세요.

직접 해보기

using UnityEngine;

public class Ball : MonoBehaviour
{
    public float force = 10f;
    private Rigidbody rb;

    void Start()
    {
    }

    void FixedUpdate()
    {
        // 방향키로 공을 밀어 보세요: Horizontal은 x축 방향으로, Vertical은 z축 방향으로.
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

물리와 게임플레이의 모든 레슨