Menu
CoddyTech

튕김과 마찰

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

콜라이더가 튕기고 미끄러지는 방식은 PhysicsMaterial(Unity 6에서 사용하는 이름이며, 이전 버전에서는 PhysicMaterial이라고 불렀습니다)에서 비롯됩니다. bounciness는 0(튕기지 않음)부터 1(속도를 모두 유지함)까지의 값입니다. dynamicFriction은 미끄러지는 물체의 속도를 늦추고, staticFriction은 정지한 물체가 미끄러지기 시작하기 전에 얼마나 세게 밀어야 하는지 결정합니다. 머티리얼이 없는 콜라이더는 마찰이 0.6이고 반발력이 0인 것처럼 동작합니다. 이 슈퍼 볼은 자체 콜라이더에 반발력이 큰 머티리얼을 설정합니다:

void Start()
{
    PhysicsMaterial mat = GetComponent<Collider>().material;   // 이 collider의 자체 복사본
    mat.bounciness = 0.9f;
    mat.bounceCombine = PhysicsMaterialCombine.Maximum;
}

접촉할 때는 콜라이더 두 개가 만나므로 Unity는 두 콜라이더의 값을 조합합니다. 각 머티리얼은 반발력에는 bounceCombine을, 마찰에는 frictionCombine을 사용해 조합 방식을 정하며, 둘 다 네 가지 모드인 Average(기본값), Minimum, Multiply, Maximum 중 하나를 사용합니다. 두 콜라이더가 서로 다른 모드를 지정하면 목록에서 뒤에 있는 모드가 우선합니다. 머티리얼이 없는 바닥에서는 Average를 사용하면 공의 반발력이 (0.9 + 0) / 2 = 0.45가 됩니다. Maximum을 사용하면 공은 튈 때마다 속도의 0.9를 유지합니다. 높이는 속도의 제곱에 비례하므로, 이는 높이의 0.9 x 0.9 = 81%에 해당합니다.

.material은 콜라이더에 해당 머티리얼의 고유한 사본을 제공하므로, 변경 사항은 해당 콜라이더에만 영향을 줍니다. .sharedMaterial은 머티리얼 에셋 자체이며, 이를 사용하는 모든 콜라이더가 공유합니다. 머티리얼을 할당받지 않은 콜라이더에서는 null입니다.

challenge icon

챌린지

쉬움

트램펄린과 얼음에 각각 고유한 탄성과 마찰력을 설정하세요.

  1. Start()에서 PhysicsMaterial mat = GetComponent<Collider>().material;을 가져오고, mat.bounciness = bounce;, mat.dynamicFriction 및 mat.staticFriction을 friction으로 설정하세요.
  2. mat.bounceCombine = PhysicsMaterialCombine.Maximum; 및 mat.frictionCombine = PhysicsMaterialCombine.Minimum;으로 설정하여 표면 자체의 값이 우선 적용되도록 하세요.

‘플레이’를 누르세요. 공이 트램펄린에서 높이 튀어 오릅니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;

public class Surface : MonoBehaviour
{
    public float bounce = 0f;
    public float friction = 0.6f;

    void Start()
    {
        // 이 collider에 bounce와 friction이 설정된 전용 material을 할당합니다
    }
}

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

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