움직이는 객체 만들기

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

움직이는 객체는 3D 공간 내에서 하나 이상의 축을 따라 이동하는 객체입니다. Roblox의 시뮬레이션 엔진의 내장 기능을 사용하여, 객체가 중력, 공기역학, 마찰과 같은 실제 물리적 행동을 모방하여 환경과 상호작용하고 이동할 수 있도록 할 수 있습니다. 이는 플레이어에게 친숙하고 직관적입니다.

움직이는 객체 .rbxl 파일을 참조하여, 이 튜토리얼에서는 물리적 힘이 스튜디오에서 선형 운동에 미치는 영향을 설명하고, 다양한 이동 행동을 가진 객체를 A 지점에서 B 지점으로 이동시키는 여러 기술을 보여줍니다. 여기에는 다음과 같은 내용이 포함됩니다:

  • 전체 조립체를 일정한 선형 속도로 이동시키기 위해 LinearVelocity 이동 제약 조건을 사용하는 방법.
  • 조립체를 단일 축에 제약하고 3D 공간의 한 지점에 대해 일정한 선형 속도로 이동시키기 위해 PrismaticConstraint를 사용하는 방법.
  • 조립체를 초기 힘의 충격으로 이동시키기 위해 ApplyImpulse 메서드를 사용하는 방법, 이로 인해 조립체가 시간이 지남에 따라 서서히 감속합니다.

선형 운동과 물리적 힘

Roblox Studio는 실제 물리적 행동을 실시간으로 모방하는 현실 세계 시뮬레이션 엔진입니다. 따라서 게임에서 선형으로 이동하는 객체가 어떻게 행동할지를 예측하기 위해서는 실제에서 객체가 선형 운동을 통해 어떻게 움직이는지를 높은 수준에서 이해하는 것이 중요합니다.

선형 운동은 축을 따라 이동하는 것입니다. 예를 들어, 블록이 선형 운동을 할 때, 그것은 설정된 축을 따라 이동합니다.

어두운 배경 앞에 있는 회색 블록. 이동 축이 강조 표시되어 있으며, 블록이 세계의 Y 축을 따라 이동할 것임을 나타내기 위해 화면 왼쪽을 향하고 있습니다.

선형 운동은 객체를 이동시키기 위해 밀거나 당기는 외부 물리적 힘이 없으면 존재할 수 없습니다. 뉴턴의 운동 제1법칙에 따르면, 정지한 객체는 정지 상태를 유지하고, 움직이는 객체는 외부 힘이 작용하지 않는 한 일정한 속도로 계속 움직입니다. 예를 들어, 정지한 블록은 바람과 같은 물리적 힘이 작용하지 않으면 정지 상태를 유지합니다.

은 물리적 밀기 또는 당기기의 방향과 크기를 측정하는 것으로, 객체가 축을 따라 선형 속도를 변경하도록 합니다. 속도의 변화는 가속도로 알려져 있습니다. 이 개념은 스튜디오에서 객체가 움직이기 위해 특히 중요합니다. 객체에 가하는 힘이 클수록 더 빨리 가속합니다.

이는 힘이 중력이나 마찰과 같은 객체에 저항하는 물리적 힘보다 커야 하기 때문입니다. 예를 들어, 블록을 금속 판 위에 놓으면, 바람의 물리적 힘이 블록을 계속 가속하기 위해 금속 판의 마찰을 극복해야 합니다. 바람의 힘이 금속 판의 마찰보다 크지 않으면 블록은 가속하지만, 이전 예보다 더 느리게 가속합니다.

어두운 회색 금속 판 앞에 있는 회색 블록. 블록의 움직임을 늦추기 위해 판 마찰이 있음을 나타내는 다이어그램이 있습니다.

선형 속도는 객체의 이동을 측정하는 것으로, 객체가 일정 시간 동안 축을 따라 위치를 얼마나 빠르게 변경하는지를 나타냅니다. 스튜디오는 객체가 초당 몇 스터드를 이동하는지를 기준으로 선형 속도를 측정합니다. 스터드는 길이를 측정하는 Roblox의 기본 물리 단위이며, 각 스터드는 실제 세계에서 약 28cm에 해당합니다.

기본 베이스플레이트의 4x4 그리드 텍스처 앞에 있는 회색 블록. 하나의 스터드 큐브 직사각형이 강조 표시되어 있습니다.

선형 속도를 이해하는 것은 게임 플레이를 설계하는 데 중요합니다. 이는 이동하는 객체에 대해 특정 속도를 달성하기 위해 얼마나 많은 힘이 필요한지를 결정하는 데 도움이 됩니다. 예를 들어, 객체를 위로 추진하고 싶을 때, 객체가 정확하게 이동할 수 있도록 환경 내에서 중력을 극복하기 위해 힘을 조정해야 하는 방법을 고려하는 것이 중요합니다.

다음 섹션에서는 이러한 개념을 더 깊이 파고들며, 환경 내의 모든 저항 물리적 힘을 극복하는 데 필요한 힘으로 일정한 또는 초기 선형 속도로 객체를 이동하는 방법을 배웁니다. 이러한 물리 개념을 다루면서, 스튜디오에서 이상적인 선형 이동 행동을 달성하기 위해 속성 값을 조정하는 방법을 더 정확하게 예측할 수 있습니다.

일정한 선형 속도 유지

객체가 일정한 선형 속도에 도달하고 이를 유지하기 위해서는, 객체의 선형 속도를 감속시키거나 정지 상태를 유지하게 하는 저항 물리적 힘을 극복할 수 있는 힘이 필요합니다. 예를 들어, 스튜디오에서 객체가 [0, 12, 0]의 선형 속도를 가지도록 하려면, 객체가 환경 내에서 Y 축을 따라 초당 12 스터드에 도달하고 이를 유지하기 위해 충분한 힘이 필요합니다.

필요한 힘의 양은 중력과 마찰과 같은 환경 내의 저항 물리적 힘뿐만 아니라 객체 자체에도 의존합니다. 예를 들어, 동일한 축을 따라 이동하는 두 개의 동일한 모양의 객체가 있을 때, 더 큰 질량을 가진 객체는 동일한 선형 가속도를 달성하기 위해 더 많은 힘이 필요합니다.

작은 삼각형 부품은 질량이 적기 때문에 동일한 가속도를 달성하기 위해 더 적은 힘이 필요합니다.
큰 삼각형 부품은 질량이 크기 때문에 동일한 가속도를 달성하기 위해 더 많은 힘이 필요합니다.

다음 하위 섹션에서는 다양한 모양과 크기의 조립체를 사용하여 전체 객체 또는 객체의 일부를 일정한 선형 속도로 이동하는 방법을 가르칩니다. 다양한 속성 값을 실험하면서, 자신의 게임에서 조립체에 필요한 최대 힘의 양을 추정하는 방법을 배우게 됩니다.

LinearVelocity 제약 조건 사용

LinearVelocity 객체는 전체 조립체에 힘을 가하여 일정한 선형 속도를 유지하는 이동 제약 조건의 일종입니다. 조립체의 위치를 이동 중에 축에 고정하지 않음으로써, 조립체는 3D 공간의 다른 객체와 충돌할 때 자유롭게 회전할 수 있습니다. 이러한 유형의 이동은 플레이어가 예측하기 더 어려운 놀라운 게임 플레이 시나리오를 초래합니다.

수련이 서로 충돌할 때 방향이 바뀌지만, 일정한 선형 속도로 강을 따라 계속 흐릅니다.

조립체를 이동시키기 시작하려면, LinearVelocity 제약 조건이 다음을 알아야 합니다:

  • 힘을 가할 지점과 양의 방향 또는 음의 방향.
  • 조립체가 초당 이동하기를 원하는 스터드의 양.
  • 조립체가 일정한 선형 속도에 도달하기 위해 엔진이 가할 수 있는 최대 힘의 양.

이 과정을 시연하기 위해, LinearVelocity 제약 조건이 참조하는 부착물이 있는 수련을 구성하여 수련이 세계의 음의 X 축을 따라 초당 15 스터드로 이동하도록 합니다.

수련의 클로즈업. 수련의 제약 조건 시각적 보조 장치가 보이며, 오른쪽을 가리키고 있어 세계의 음의 X 축을 나타냅니다.

부착물 추가

힘을 가할 지점을 지정하려면, 조립체에 Attachment 객체를 추가한 다음, 3D 공간에서 부착물의 위치를 구성합니다. 샘플 움직이는 객체 게임은 수련의 중앙에 부착물을 배치하여 제약 조건이 부착물에서 특정 축을 따라 메시를 이동할 수 있도록 합니다.

부착물에는 이동 축을 시각화하는 데 도움이 되는 시각적 보조 장치가 포함되어 있습니다. 노란색 화살표는 부착물의 주요 축을 나타내고, 주황색 화살표는 부착물의 보조 축을 나타냅니다. 이 기술의 단계에서는 두 축 모두 수련의 이동에 영향을 미치지 않지만, 이러한 시각적 보조 장치를 이해하는 것은 향후 참조를 위해 중요합니다. 이는 PrismaticConstraint와 같은 다양한 유형의 제약 조건에 대한 이상적인 행동을 결정하는 데 도움이 될 수 있습니다.

부착물의 시각적 보조 장치 화살표. 부착물의 주요 축을 나타내는 노란색 화살표는 위를 가리키고, 보조 축을 나타내는 주황색 화살표는 오른쪽을 가리킵니다.

부착물을 추가하려면:

  1. Explorer 창에서 LinearVelocityExample 폴더를 확장한 다음, 그 하위 LilyPad_DIY 모델을 확장합니다.

  2. Pad 메시 안에 부착물을 삽입합니다.

    1. 메시 위에 마우스를 올리고 ⊕ 버튼을 클릭합니다. 컨텍스트 메뉴가 표시됩니다.
    2. 메뉴에서 Attachment를 삽입합니다. 부착물이 부품의 중앙에 표시됩니다.
    3. 부착물의 이름을 MoveAttachment로 변경합니다.
    수련과 그 부착물 시각적 보조 장치의 클로즈업. 주요 축이 카메라에서 멀어지고, 보조 축이 위를 가리킵니다.

제약 조건 구성

이제 메시가 수련을 이동시킬 고정된 지점을 가지게 되었으므로, LinearVelocity 제약 조건의 속성을 구성하여 일정한 선형 속도를 위한 방향과 크기, 메시가 초당 이동하기를 원하는 스터드의 양, 조립체가 일정한 선형 속도에 도달하기 위해 엔진이 가할 수 있는 최대 힘의 양을 지정할 수 있습니다.

샘플 움직이는 객체 게임은 수련을 세계의 음의 X 축을 따라 초당 15 스터드로 이동시키기 위해 최대 5000 Rowtons의 일정한 힘을 적용합니다. Rowtons는 힘을 측정하는 Roblox의 기본 물리 단위입니다. Roblox 물리 단위와 그것이 미터법 단위로 변환되는 방법에 대한 참조는 Roblox 단위를 참조하세요.

LinearVelocity 제약 조건을 구성하려면:

  1. 제약 조건의 선형 방향을 참조할 수 있도록 뷰포트에서 제약 조건을 표시하려면, 스튜디오의 View 메뉴에서 Show Constraint Details를 활성화합니다.

  2. Pad 메시 안에 LinearVelocity 제약 조건을 삽입합니다.

    1. Explorer 창에서 메시 위에 마우스를 올리고 ⊕ 아이콘을 클릭합니다. 컨텍스트 메뉴가 표시됩니다.
    2. 컨텍스트 메뉴에서 LinearVelocity를 삽입합니다.
  3. 메시의 부착물을 새 제약 조건에 할당합니다.

    1. Explorer 창에서 제약 조건을 선택합니다.
    2. Properties 창에서,
      1. Attachment0MoveAttachment로 설정합니다.
      2. MaxForce5000으로 설정하여 목표 선형 속도를 달성하기 위해 최대 5000 Rowtons의 일정한 힘을 적용합니다.
      3. RelativeToWorld로 유지하여 수련이 세계의 위치와 방향에 상대적으로 이동하도록 합니다.
      4. VelocityConstraintLine으로 설정하여 부착물에서 선을 따라 힘을 제약합니다.
      5. LineDirection-1, 0, 0으로 설정하여 수련이 세계의 음의 X 축을 따라 이동하도록 합니다. 이 속성을 1, 0, 0으로 설정하면 수련이 세계의 양의 X 축을 따라 이동하게 됩니다.
      6. LineVelocity15로 설정하여 수련이 초당 15 스터드로 이동하도록 합니다.
    수련과 그 제약 조건 시각적 보조 장치 화살표의 클로즈업. 오른쪽, 즉 세계의 음의 X 축을 가리킵니다.
  4. 설정한 힘의 양이 메시를 세계의 음의 X 축을 따라 초당 15 스터드로 이동하는지 확인합니다.

    • 메자닌의 드롭다운 메뉴에서 Run 시뮬레이션 모드를 선택하고 Play 버튼을 클릭하여 시작합니다. 스튜디오는 현재 카메라 위치에서 게임을 시뮬레이션하며, 3D 공간에 아바타가 없습니다.

      스튜디오 메자닌의 테스트 모드 드롭다운에서 실행 옵션.

PrismaticConstraint 제약 조건 사용

PrismaticConstraint 객체는 두 개의 부착물 사이에 강체 조인트를 생성하는 기계적 제약 조건의 일종으로, 부모 조립체가 서로 상대적으로 한 축을 따라 이동할 수 있도록 합니다. 두 조립체의 위치를 단일 축에 고정함으로써, 각 조립체는 같은 방향으로 함께 회전할 때만 회전할 수 있습니다.

이러한 유형의 이동은 플레이어가 예측하기 더 쉬운 안정적인 게임 플레이 시나리오를 초래합니다. 예를 들어, 샘플 움직이는 객체 게임은 플레이어가 거대한 강을 조심스럽게 건널 수 있도록 로그 플랫폼을 이동시키기 위해 PrismaticConstraint 객체를 사용합니다.

PrismaticConstraint.ActuatorTypeMotor로 설정하면, 이 제약 조건은 두 부착물에 힘을 가하여 부착물이 일정한 선형 속도에 도달하고 이를 유지하도록 합니다. 한 부착물의 부모 조립체를 고정하면, 힘은 고정되지 않은 조립체를 일정한 선형 속도로 계속 이동시키고, 고정된 조립체는 정지 상태를 유지합니다.

조립체를 이동시키기 시작하려면, PrismaticConstraint 제약 조건이 다음을 알아야 합니다:

  • 힘을 가할 지점과 양의 방향 또는 음의 방향.
  • 부착물이 초당 이동하기를 원하는 스터드의 양.
  • 부착물과 그 부모 조립체가 일정한 선형 속도에 도달하기 위해 엔진이 가할 수 있는 최대 힘의 양.

이 과정을 시연하기 위해, 로그 조립체를 구성하여 두 개의 객체가 자식 부착물을 가지며, PrismaticConstraint가 참조하여 로그를 세계의 음의 X 축을 따라 초당 40 스터드로 이동하도록 합니다.

강 위에 있는 갈색 로그의 클로즈업. 로그의 제약 조건 시각적 보조 장치가 보이며, 오른쪽, 즉 세계의 음의 X 축을 가리킵니다.

부착물 구성

조립체 내의 특정 객체를 이동할 방향을 지정하려면, 두 개의 Attachment 객체를 조립체에 추가한 다음, 3D 공간에서 정렬 및 방향을 구성합니다. 샘플 움직이는 객체 게임은 고정된 로그와 겹치는 위치 근처의 세계의 X 축을 따라 두 개의 부착물을 정렬하고, 각 부착물의 주요 축이 세계의 음의 X 축을 향하도록 설정합니다.

다음 섹션에서 PrismaticConstraint 제약 조건을 구성할 때, 로그는 고정된 부품에 상대적으로 이동합니다. 즉, 로그는 3D 공간에서 고정되어 움직일 수 없는 정지된 부품에서 멀어지게 됩니다.

PrismaticConstraint를 위한 부착물을 구성하려면:

  1. Explorer 창에서 PrismaticConstraintExample 폴더를 확장한 다음, 그 하위 Log_DIY 모델을 확장합니다.

  2. Log 메시 안에 부착물을 삽입합니다.

    1. 메시 위에 마우스를 올리고 ⊕ 버튼을 클릭합니다. 컨텍스트 메뉴가 표시됩니다.
    2. 메뉴에서 Attachment를 삽입합니다. 부착물이 부품의 중앙에 표시됩니다.
    3. 부착물의 이름을 LogAttachment로 변경합니다.
    로그와 그 부착물 시각적 보조 장치의 클로즈업. 주요 축이 카메라를 향하고, 보조 축이 위를 가리킵니다.
  3. 동일한 프로세스를 사용하여 Anchor 부품에 부착물을 삽입한 다음, 부착물의 이름을 AnchorAttachment로 변경합니다.

    로그와 두 개의 부착물 시각적 보조 장치의 클로즈업. 새 부착물의 주요 축 시각적 보조 장치가 오른쪽을 가리키고, 보조 축이 위를 가리킵니다.
  4. View Selector 도구를 사용하여 세계의 좌표를 참조하여 LogAttachmentAnchorAttachment를 회전시켜 각 부착물의 주요 축이 세계의 음의 X 축을 향하도록 합니다.

    로그와 그 부착물 시각적 보조 장치의 클로즈업. 두 부착물 모두 주요 축이 오른쪽을 가리키고, 보조 축이 위를 가리킵니다.
  5. AnchorAttachment의 위치를 조정하여 두 부착물이 세계의 X 축에 정렬되도록 합니다.

    로그와 수평으로 배치된 두 개의 부착물 시각적 보조 장치의 클로즈업. 두 부착물 모두 주요 축이 오른쪽을 가리키고, 보조 축이 위를 가리킵니다.

제약 조건 구성

이제 부착물이 동일한 축에 정렬되고 로그가 이동할 방향을 향하고 있으므로, PrismaticConstraint 제약 조건의 속성을 구성하여 각 부착물의 주요 축의 양의 방향 또는 음의 방향으로 목표 일정한 선형 속도를 적용할지, 부착물이 초당 이동하기를 원하는 스터드의 양, 로그가 일정한 선형 속도에 도달하기 위해 엔진이 가할 수 있는 최대 힘의 양을 지정할 수 있습니다.

자신의 사용 사례에 따라 다른 값을 선택할 수 있지만, 샘플 움직이는 객체 게임은 최대 50000 Rowtons의 일정한 힘을 적용하여 부착물이 세계의 음의 X 축을 따라 초당 40 라디안으로 이동하도록 합니다. 그러나 앵커 부착물이 고정된 객체에 있기 때문에, 로그의 부착물만 이동할 수 있습니다.

프리즘 제약 조건을 구성하려면:

  1. Log 메시 안에 PrismaticConstraint 객체를 삽입합니다.

    1. Explorer 창에서 메시 위에 마우스를 올리고 ⊕ 아이콘을 클릭합니다. 컨텍스트 메뉴가 표시됩니다.
    2. 컨텍스트 메뉴에서 PrismaticConstraint를 삽입합니다.
  2. 로그의 부착물을 새 제약 조건에 할당하여 로그가 고정된 블록 부품에 상대적으로 이동하도록 합니다.

    1. Explorer 창에서 제약 조건을 선택합니다.
    2. Properties 창에서,
      1. Attachment0AnchorAttachment로 설정합니다.
      2. Attachment1LogAttachment로 설정합니다. 제약 조건이 뷰포트에 표시됩니다.
    로그와 그 제약 조건 시각적 보조 장치의 클로즈업. 아직 속도가 설정되지 않았기 때문에 화살표 시각적 보조 장치가 없습니다.
  3. Explorer 창에서 제약 조건을 선택한 다음, Properties 창에서:

    1. ActuatorTypeMotor로 설정합니다. 새로운 속성 필드가 표시됩니다.
    2. MotorMaxForce50000으로 설정하여 목표 선형 속도를 달성하기 위해 최대 50000 Rowtons의 일정한 힘을 적용합니다.
    3. Velocity40으로 설정하여 로그가 초당 40 스터드로 이동하도록 합니다.
    로그와 그 제약 조건 시각적 보조 장치 화살표의 클로즈업. 오른쪽, 즉 세계의 음의 X 축을 가리킵니다.
  4. 설정한 힘의 양이 로그를 세계의 음의 X 축을 따라 초당 40 스터드로 이동하는지 확인합니다.

    • 메자닌의 드롭다운 메뉴에서 Run 시뮬레이션 모드를 선택하고 Play 버튼을 클릭하여 시작합니다. 스튜디오는 현재 카메라 위치에서 게임을 시뮬레이션하며, 3D 공간에 아바타가 없습니다.

      스튜디오 메자닌의 테스트 모드 드롭다운에서 실행 옵션.

초기 선형 힘 적용

객체의 선형 속도를 변경하는 또 다른 방법은 힘의 충격을 적용하는 것입니다. 힘의 충격 후, 객체는 마찰과 같은 저항력이 있을 경우 정지할 때까지 감속하거나, 저항력이 없을 경우 일정한 선형 속도로 계속 이동합니다.

이 기술은 폭발이나 충격적인 충돌과 같은 중요한 게임 플레이 이벤트 후에 객체를 이동시키는 데 유용합니다. 이는 플레이어에게 즉각적인 피드백을 제공합니다. 이를 시연하기 위해, 다음 하위 섹션에서는 플레이어가 점프 패드와 충돌할 때 하늘로 위로 발사되는 방법을 가르칩니다. 이 초기 충격은 새로운 값으로 조정하여 자신의 게임 플레이 요구 사항에 맞출 수 있습니다.

ApplyImpulse 사용

ApplyImpulse 메서드는 전체 조립체에 힘을 가하여 초기 선형 속도를 얻고, 저항력이 있을 경우 정지할 때까지 감속합니다. 조립체를 이동시키기 시작하려면, 메서드가 알아야 할 사항은 다음과 같습니다:

  • 이동할 조립체.
  • 초기 선형 속도에 도달하기 위해 힘을 가할 축.
  • 각 축에 적용할 힘의 양.

이 모든 값을 스크립트에서 정의할 수 있습니다. 예를 들어, 샘플 스크립트는 이동할 조립체를 플레이어 캐릭터의 Humanoid 객체로 정의한 다음, 플레이어를 세계의 양의 Y 축으로 발사하기 위해 2500 Rowton-초의 힘의 충격을 적용합니다. 플레이어 캐릭터는 질량이 다르기 때문에, 모든 플레이어를 발사하기 위해 이 힘을 증가시키고 균형을 맞춰야 할 수도 있습니다.

ApplyImpulse를 사용하여 조립체를 이동시키려면:

  1. Explorer 창에서 ApplyImpulseExample 폴더를 확장한 다음, 그 하위 JumpPad_DIY 모델을 확장합니다.

  2. JumpPad 부품 안에 스크립트를 삽입합니다.

    1. 부품 위에 마우스를 올리고 ⊕ 버튼을 클릭합니다. 컨텍스트 메뉴가 표시됩니다.
    2. 메뉴에서 Script를 삽입합니다. 부착물이 부품의 중앙에 표시됩니다.
    3. 스크립트의 이름을 JumpScript로 변경합니다.
  3. 기본 코드를 다음 코드로 교체합니다:

    local volume = script.Parent
    local function onTouched(other)
    local impulse = Vector3.new(0, 2500, 0)
    local character = other.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    if humanoid and other.Name == "LeftFoot" then
    other:ApplyImpulse(impulse)
    end
    end
    volume.Touched:Connect(onTouched)
©2026 Roblox Corporation. Roblox 및 Roblox 로고, 'Powering Imagination'은 미국 및 기타 국가 내 당사의 등록 및 미등록 상표입니다.