PhysicsService 주로 부품 세트가 다른 충돌 그룹의 부품과 충돌할 수 있는지 여부를 정의하는 충돌 그룹 에 대한 메서드를 포함합니다. 를 통해 충돌 그룹을 등록하고 그 부품의 속성을 충돌 그룹의 이름에 설정하여 부품을 할당할 수 있습니다.
충돌 그룹 간의 충돌 관계 생성, 삭제 및 수정은 서버 측 Scripts에 제한됩니다.
Studio 및 스크립트 내에서 사용 세부 정보는 충돌 필터링을 참조하십시오.
요약
메서드
두 그룹 간의 충돌 상태를 설정합니다.
두 그룹이 충돌할지 여부를 반환합니다.
최대 충돌 그룹 수를 반환합니다.
플레이스모든 충돌 그룹에 대한 정보가 있는 테이블을 반환합니다.
충돌 그룹이 등록되었는지 확인합니다.
지정된 이름으로 새로운 충돌 그룹을 등록합니다.
지정된 충돌 그룹의 이름 변경.
지정된 이름에 대한 충돌 그룹을 등록 취소합니다.
속성
메서드
CollisionGroupSetCollidable
두 그룹 간의 충돌 상태를 설정합니다.이 메서드는 그룹 중 하나라도 등록되지 않으면 오류가 발생하므로, 이 호출을 하기 전에 PhysicsService:IsCollisionGroupRegistered()를 통해 각 그룹의 등록을 확인하는 것이 좋습니다.
매개 변수
반환
CollisionGroupsAreCollidable
지정된 두 충돌 그룹이 충돌하는지 여부를 반환합니다.이 메서드는 기본 충돌 마스크가 모든 그룹과 충돌하기 때문에 그룹 중 하나가 등록되지 않은 경우에도 반환됩니다. true.
매개 변수
반환
GetRegisteredCollisionGroups
모든 플레이스충돌 그룹에 대한 정보가 있는 테이블을 반환합니다. 반환된 테이블의 각 값은 자체가 테이블이며 두 멤버가 포함되어 있습니다.
<th>유형</th><th>설명</th></tr></thead><tbody><tr><td>마스크</td><td>정수 integer</td><td>충돌 그룹의 마스크; 내부 사용에만 사용됩니다.</td></tr><tr><td>이름</td><td>문자열</td><td>충돌 그룹의 이름.</td></tr></tbody>
멤버 |
---|
반환
IsCollisionGroupRegistered
충돌 그룹이 등록되었는지 확인합니다.PhysicsService:CollisionGroupSetCollidable()와 같은 등록되지 않은 충돌 그룹에 대한 오류를 발생시키는 메서드를 호출하기 전에 이 메서드를 호출하는 것이 좋습니다.
매개 변수
반환
RegisterCollisionGroup
지정된 이름으로 새로운 충돌 그룹을 등록합니다. 이름은 "Default" 일 수 없습니다.
이 메서드는 작업 공간에 있는 BaseParts의 수에 따라 약간의 성능 오버헤드가 있으므로 스튜디오의 편집기를 통해 모든 충돌 그룹을 편집 시간에 등록하고 가능한 한 적게 UnregisterCollisionGroup()과 RenameCollisionGroup()을 호출하는 것이 좋습니다.
매개 변수
반환
코드 샘플
This example demonstrates one basic use of collision groups. It assigns BallPart to "CollisionGroupBall" and DoorPart to "CollisionGroupDoor", then makes the two groups non-collidable using PhysicsService:CollisionGroupSetCollidable().
local PhysicsService = game:GetService("PhysicsService")
local collisionGroupBall = "CollisionGroupBall"
local collisionGroupDoor = "CollisionGroupDoor"
-- Register collision groups
PhysicsService:RegisterCollisionGroup(collisionGroupBall)
PhysicsService:RegisterCollisionGroup(collisionGroupDoor)
-- Assign parts to collision groups
script.Parent.BallPart.CollisionGroup = collisionGroupBall
script.Parent.DoorPart.CollisionGroup = collisionGroupDoor
-- Set groups as non-collidable with each other and check the result
PhysicsService:CollisionGroupSetCollidable(collisionGroupBall, collisionGroupDoor, false)
print(PhysicsService:CollisionGroupsAreCollidable(collisionGroupBall, collisionGroupDoor)) --> false
RenameCollisionGroup
지정된 등록된 충돌 그룹의 이름을 변경하지만, 그룹을 사용하는 부품의 속성을 재명명하지는 않습니다.이 메서드의 첫 번째 인수는 그룹 이름을 변경하는 데 사용할 그룹 이름이고, 두 번째 인수는 그룹의 새 이름입니다.지정된 그룹이 존재하지 않으면 이 메서드는 아무 것도 하지 않습니다.새 이름의 명명 규칙은 그룹이 RegisterCollisionGroup()로 생성되는 것과 동일한 규칙을 따릅니다.
다음 상황에서 이 메서드는 런타임 오류를 발생시킵니다:
- 둘 중 하나의 인수에 유효하지 않거나 비어 있는 이름이 제공됩니다.
- 메서드는 클라이언트에서 호출됩니다.
이 메서드는 작업 공간에 있는 의 수에 따라 약간의 성능 오버헤드가 있으므로 스튜디오 편집기를 통해 모든 충돌 그룹을 편집 시간에 등록하고 가능한 한 자주 이름을 바꾸는 것이 좋습니다.
매개 변수
반환
UnregisterCollisionGroup
다음 동작으로 지정된 이름에 대한 충돌 그룹을 등록 취소합니다:
- 유효하지 않은 이름이 제공되면 메서드는 아무 것도 하지 않습니다.
- 예약된 이름 이 제공되면 메서드가 클라이언트에서 호출되면 오류가 발생합니다.
- 충돌 그룹에서 제거될 때 일부가 있으면 해당 부품은 여전히 동일한 충돌 그룹 이름을 유지합니다.제거된 그룹의 물리적 동작은 정의되지 않으므로 제거된 그룹의 모든 부품을 다른 그룹으로 이동하는 것이 좋습니다(예: "Default" 그룹).
이 메서드는 작업 공간에 있는 BaseParts의 수에 따라 약간의 성능 오버헤드가 있으므로 스튜디오의 편집기를 통해 모든 충돌 그룹을 편집 시간에 등록하고 이 메서드를 가능한 한 적게 호출하는 것이 좋습니다.