# Collision

월드 객체에 대해 충돌 관련 설정을 처리하는 객체에요.

## **이벤트**

<br>

| **OnCollisionEvent** |
| -------------------- |

다른 객체와 충돌할 때 호출되는 이벤트에요.\
연결함수 형식은 function(self, target), self 는 이벤트를 연결한 오브젝트, target 은 self 와 충돌한 오브젝트 입니다.

\-- 샘플 --

```lua
local cube = Workspace.Cube

local function CollisionEvent(self, target) --OnCollisionEvent로 연결된 함수는 self와 target 인자가 고정적으로 들어가요.
    if target ~= nil then
        print("CollisionEvent " .. target.Name)
    end
end
cube.Collision.OnCollisionEvent:Connect(CollisionEvent) --Collision이 true인 오브젝트와 충돌중일때 호출되는 함수를 연결해요.
```

<br>

| **OnBeginOverlapEvent** |
| ----------------------- |

다른 객체와 겹쳐질 때 호출되는 이벤트에요.\
연결함수 형식은 function(self, target), self 는 이벤트를 연결한 오브젝트, target 은 self 와 겹친 오브젝트 입니다.

\-- 샘플 --

```lua
local cube = Workspace.Cube

local function BeginOverlapEvent(self, target) --OnBeginOverlapEvent 연결된 함수는 self와 target 인자가 고정적으로 들어가요.
    if target ~= nil then
        print("BeginOverlapEvent " .. target.Name)
    end
end
cube.Collision.OnBeginOverlapEvent:Connect(BeginOverlapEvent) --Collision이 false인 오브젝트와 충돌을 시작할때 호출되는 함수를 연결해요.
```

<br>

| **OnEndOverlapEvent** |
| --------------------- |

다른 객체와 겹쳐짐이 끝날 때 호출되는 이벤트에요.\
연결함수 형식은 function(self, target), self 는 이벤트를 연결한 오브젝트, target 은 self 와 겹침이 끝난 오브젝트 입니다.

\-- 샘플 --

```lua
local cube = Workspace.Cube

local function EndOverlapEvent(self, target) --OnEndOverlapEvent 연결된 함수는 self와 target 인자가 고정적으로 들어가요.
    if target ~= nil then
        print("EndOverlapEvent " .. target.Name)
    end
end
cube.Collision.OnEndOverlapEvent:Connect(EndOverlapEvent) --Collision이 false인 오브젝트와 충돌이 끝날때 호출되는 함수를 연결해요.
```

<br>

| **OnOverlapUpdateEvent** |
| ------------------------ |

다른 객체와 겹쳐있는 동안 매 프레임마다 호출되는 이벤트에요.\
연결함수 형식은 function(self, target), self 는 이벤트를 연결한 오브젝트, target 은 self 와 겹쳐있는 오브젝트 입니다.

\-- 샘플 --

```lua
local cube = Workspace.Cube

local function OverlapUpdateEvent(self, target, updateTime) --OnOverlapUpdateEvent로 연결된 함수는 self, target, updateTime 인자가 고정적으로 들어가요.
    if target ~= nil then
        print("OverlapUpdateEvent " .. target.Name)
    end
end
cube.Collision.OnOverlapUpdateEvent:Connect(OverlapUpdateEvent) --Collision이 false인 오브젝트와 충돌중일때 호출되는 함수를 연결해요.
```

## **함수**

<br>

| **void SetCollisionType(string usercollisiontype)** |
| --------------------------------------------------- |

해당 오브젝트의 충돌 타입을 지정해줘요.

\-- 샘플 --

```lua
Game:AddUserCollisionType("CollisionTag1") --게임에 유저 충돌 타입(CollisionTag1)을 추가해요.

local cube1 = Workspace.Cube1
local cube2 = Workspace.Cube2

cube1.Collision:SetCollisionType("CollisionTag1") --객체A에 충돌 타입(CollisionTag1)을 설정해요.

cube2.Collision:SetUserCollisionTypeResponse("CollisionTag1", Enum.CollisionResponse.Overlap) --또 다른 객체B에 충돌 타입(CollisionTag1)별 충돌 반응을 설정해요.
```

<br>

| **String GetCollisionType()** |
| ----------------------------- |

해당 오브젝트의 충돌 타입을 가져올 수 있어요.

\-- 샘플 --

```lua
local cube = Workspace.Cube

print(cube.Collision:GetCollisionType()) --해당 오브젝트의 충돌 타입을 가져와요.
```

<br>

| **void SetCharacterCollisionResponse(CollisionResponse CollisionResponse)** |
| --------------------------------------------------------------------------- |

캐릭터와 충돌 시 어떻게 처리 할지를 설정하는 함수에요. ( [Enum.CollisionResponse.타입](https://ditoland-utplus.gitbook.io/ditoland/api-reference/enums/collisionresponse) )

\-- 샘플 --

```lua
Workspace.Cube1.Collision:SetCharacterCollisionResponse(Enum.CollisionResponse.Block) --오브젝트가 캐릭터와 충돌했을때 통과되지 않고 연결된 이벤트가 발생되게 설정해요.
Workspace.Cube2.Collision:SetCharacterCollisionResponse(Enum.CollisionResponse.Overlap) --오브젝트가 캐릭터와 충돌했을때 통과되고 연결된 이벤트가 발생되게 설정해요..
Workspace.Cube3.Collision:SetCharacterCollisionResponse(Enum.CollisionResponse.Ignore) --오브젝트가 캐릭터와 충돌했을때 통과되고 연결된 이벤트가 발생되지 않게 설정해요.
```

<br>

| **void SetUserCollisionTypeResponse(string UserCollisionType, CollisionResponse CollisionResponse)** |
| ---------------------------------------------------------------------------------------------------- |

유저타입 충돌 물체의 충돌 시 처리를 변경하는 함수에요. (변경 할 유저타입 충돌 이름, [Enum.CollisionResponse.타입](https://ditoland-utplus.gitbook.io/ditoland/api-reference/enums/collisionresponse) )

\-- 샘플 --

```lua
Game:AddUserCollisionType("CollisionTag1") --게임에 유저 충돌 타입(CollisionTag1)을 추가해요.

local cube1 = Workspace.Cube1
local cube2 = Workspace.Cube2

cube1.Collision:SetCollisionType("CollisionTag1") --객체A에 충돌 타입(CollisionTag1)을 설정해요.

cube2.Collision:SetUserCollisionTypeResponse("CollisionTag1", Enum.CollisionResponse.Overlap) --또 다른 객체B에 충돌 타입(CollisionTag1)별 충돌 반응을 설정해요.
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ditoland-utplus.gitbook.io/ditoland/api-reference/common/collision.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
