Menu
CoddyTech

튕김과 마찰

Coddy Unity 여정의 물리와 게임플레이 섹션에 포함된 레슨. 63개 중 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

챌린지

쉬움

플레이그라운드에 표면을 적용하세요. Surface 스크립트는 파란색 트램펄린(bounce 0.8, friction 0.6)과 얼음 구간(bounce 0, friction 0.1)에 있습니다. 공과 상자에는 자체 재질이 없습니다.

  • Start()에서 이 콜라이더 자체의 재질을 bounce와 friction으로 설정하세요(동적 마찰과 정적 마찰 모두).
  • 표면에 착지하는 물체는 해당 표면의 bounce를 온전히 사용해 튀어야 하고, 표면 위에서 미끄러지는 물체는 재질이 없는 물체의 0.6과 섞이지 않고 해당 표면 자체의 friction을 사용해야 합니다.

Play를 눌러 공이 튀는 모습을 본 다음, Check를 누르세요. 상자도 얼음 위를 미끄러집니다.

직접 해보기

using UnityEngine;

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

    void Start()
    {
        // 이 collider에 bounce와 friction이 설정된 전용 material을 지정합니다
    }
}
quiz icon실력 점검

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

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