PhysicsService 는 주로 충돌 그룹과 작동하는 메서드를 포함하는데, 충돌 그룹을 등록하는 것은 Class.PhysicsService:RegisterCollisionGroup()|RegisterCollisionGroup() 을 통해
충돌 그룹 간의 충돌 관계를 만들고 삭제하고 수정하는 것은 서버 사이드 Scripts 에 제한됩니다.
Studio 및 스크립트 내에서 사용 세부 정보는 충돌 필터링를 참조하십시오.
요약
메서드
두 그룹 간의 충돌 상태를 설정합니다.
두 그룹이 충돌할지 여부를 반환합니다.
충돌 그룹의 최대 수를 반환합니다.
모든 플레이스충돌 그룹에 대한 정보가 포함된 테이블을 반환합니다.
충돌 그룹이 등록되어 있는지 여부를 확인합니다.
지정된 이름으로 새로운 충돌 그룹을 등록합니다.
지정된 충돌 그룹에 이름을 변경합니다.
지정된 이름의 충돌 그룹을 등록 취소합니다.
속성
메서드
CollisionGroupSetCollidable
두 그룹 사이의 충돌 상태를 설정합니다. 이 메서드는 그룹 중 하나가 등록되지 않으면 오류가 발생하므로 이 메서드를 호출하기 전에 PhysicsService:IsCollisionGroupRegistered() 확인하는 것이 좋습니다.
매개 변수
반환
CollisionGroupsAreCollidable
두 지정된 충돌 그룹이 충돌할지 여부를 반환합니다. 이 메서드는 기본 충돌 마스크가 모든 그룹과 충돌하기 때문에 그룹이 등록되지 않은 경우에도 참이 됩니다.
매개 변수
반환
GetRegisteredCollisionGroups
플레이스모든 충돌 그룹에 대한 정보가 포함된 테이블을 반환합니다. 반환된 테이블의 각 값은 테이블이며 두 개의 멤버가 포함되어 있습니다.
<tbody><tr><td>마스크</td><td>정수</td><td>충돌 그룹의 마스크; 내부 사용만 합니다.</td></tr><tr><td>이름</td><td>문자열</td><td>충돌 그룹의 이름입니다.</td></tr></tbody>
멤버 | 유형 | 설명 |
---|
반환
IsCollisionGroupRegistered
충돌 그룹이 등록되어 있는지 여부를 확인합니다. 충돌 그룹을 호출하는 메서드를 호출하기 전에 이 메서드를 호출하는 것이 좋습니다. 예를 들어 PhysicsService:CollisionGroupSetCollidable() 를 호출하는 메서드를 호출하는 것이 좋습니다.
매개 변수
반환
RegisterCollisionGroup
지정된 이름과 새로운 충돌 그룹을 등록합니다. 이름은 "Default"
작업 공간에 있는 BaseParts 수를 기반으로 이 메서드에 약간의 성능 오버헤드가 있으므로 스튜디오 Class.Edit 에서 모든 충돌 그룹을 등록하고 Class.
매개 변수
반환
코드 샘플
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
지정된 등록된 충돌 그룹을 이름 변경하지만, 하지 않습니다 그룹의 부품에 대한 CollisionGroup 속성의 이름을 변경합니다. 이
다음과 같은 경우 이 메서드에서 런타임 오류가 발생합니다:
- 제공된 모든 이름 중 하나가 잘못되었거나 비어 있습니다.
- 메서드는 클라이언트에서 호출됩니다.
작업 공간에 있는 BaseParts 수를 기반으로 이 메서드에 약간의 성능 오버헤드가 있으므로 스튜디오 편집기 를 통해 모든 충돌 그룹을 등록하고 가능한 한 자주 이름을 변경하는 것이 좋습니다.
매개 변수
반환
UnregisterCollisionGroup
다음과 같은 동작으로 충돌 그룹을 등록 해제 합니다.Unregisters the collision group for the given name, with the following behaviors:
- 잘못된 이름을 제공하면 메서드는 작동하지 않습니다.
- 예약 이름 "Default" 이 제공되면 클라이언트에서 메서드를 호출하는 경우 오류가 발생합니다.
- 충돌 그룹에 있는 부품이 제거되면 해당 부품은 여전히 동일한 충돌 그룹 이름을 유지합니다. 부품이 제거된 그룹에 물리적 동작은 정의되지 않으므로 부품을 제거된 그룹으로 이동하여 다른 그룹으로 마이그레이션하십시오, 예를 들어 "Default" 그룹.
작업 공간에 있는 BaseParts 수를 기반으로 약간의 성능 오버헤드가 있기 때문에 이 메서드를 사용하는 것이 좋습니다. Studio 편집기 를 통해 모든 충돌 그룹을 등록하고 가능한 한 자주 호출하는 것이 좋습니다.