Menu
CoddyTech

굴러가는 공

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

이 장에서는 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를 시작하고 화살표 키로 공을 굴려 보세요.

  1. Ball.cs의 Start()에서 rb = GetComponent<Rigidbody>();를 설정하세요.
  2. FixedUpdate()에서 float x = Input.GetAxis("Horizontal");와 float z = Input.GetAxis("Vertical");를 읽은 다음 rb.AddForce(new Vector3(x, 0f, z) * force);를 호출하세요.

‘플레이’를 누르고 게임을 클릭한 다음 공을 굴려 보세요. 공이 움직이면서 방향을 바꿉니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;

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

    void Start()
    {
    }

    void FixedUpdate()
    {
        // 화살표 키로 공을 밀기: Horizontal은 x축 방향, Vertical은 z축 방향.
    }
}

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

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