<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>미분류 &#8211; crowlib</title>
	<atom:link href="https://crowlib.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>https://crowlib.com</link>
	<description>hory&#039;s archives</description>
	<lastBuildDate>Tue, 10 Mar 2026 05:15:41 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>
	<item>
		<title>[Unity Tip] 복합 콜라이더와 CharacterController의 물리 간섭 해결</title>
		<link>https://crowlib.com/2026/03/10/unity-tip-%eb%b3%b5%ed%95%a9-%ec%bd%9c%eb%9d%bc%ec%9d%b4%eb%8d%94%ec%99%80-charactercontroller%ec%9d%98-%eb%ac%bc%eb%a6%ac-%ea%b0%84%ec%84%ad-%ed%95%b4%ea%b2%b0/</link>
					<comments>https://crowlib.com/2026/03/10/unity-tip-%eb%b3%b5%ed%95%a9-%ec%bd%9c%eb%9d%bc%ec%9d%b4%eb%8d%94%ec%99%80-charactercontroller%ec%9d%98-%eb%ac%bc%eb%a6%ac-%ea%b0%84%ec%84%ad-%ed%95%b4%ea%b2%b0/#respond</comments>
		
		<dc:creator><![CDATA[hory]]></dc:creator>
		<pubDate>Tue, 10 Mar 2026 05:15:41 +0000</pubDate>
				<category><![CDATA[Tip]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[미분류]]></category>
		<guid isPermaLink="false">https://crowlib.com/2026/03/10/unity-tip-%eb%b3%b5%ed%95%a9-%ec%bd%9c%eb%9d%bc%ec%9d%b4%eb%8d%94%ec%99%80-charactercontroller%ec%9d%98-%eb%ac%bc%eb%a6%ac-%ea%b0%84%ec%84%ad-%ed%95%b4%ea%b2%b0/</guid>

					<description><![CDATA[유니티에서 몬스터의 공격 판정을 위해 자식 오브젝트로 트리거 콜라이더(Hitbox)를 추가했을 때, 플레이어가 해당 영역에 물리적으로 밀리거나 접근하지 못하는 현상이 발생할 수 있습니다. 오늘 해결한 사례를 바탕으로 그 원인과 최적의 해결책을 정리합니다. 1. 문제 현상 상황: 몬스터(부모)에게 Rigidbody가 있고, 무기(자식)에 isTrigger가 켜진 박스 콜라이더가 있음. 증상: 몬스터가 공격 중이 아님에도 플레이어가 몬스터 근처(무기 콜라이더 영역)에 가려고<a class="more-link" href="https://crowlib.com/2026/03/10/unity-tip-%eb%b3%b5%ed%95%a9-%ec%bd%9c%eb%9d%bc%ec%9d%b4%eb%8d%94%ec%99%80-charactercontroller%ec%9d%98-%eb%ac%bc%eb%a6%ac-%ea%b0%84%ec%84%ad-%ed%95%b4%ea%b2%b0/">더 보기 <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>유니티에서 몬스터의 공격 판정을 위해 자식 오브젝트로 트리거 콜라이더(Hitbox)를 추가했을 때, 플레이어가 해당 영역에 물리적으로 밀리거나 접근하지 못하는 현상이 발생할 수 있습니다. 오늘 해결한 사례를 바탕으로 그 원인과 최적의 해결책을 정리합니다.</p>
<h2>1. 문제 현상</h2>
<ul>
<li><strong>상황:</strong> 몬스터(부모)에게 Rigidbody가 있고, 무기(자식)에 <code>isTrigger</code>가 켜진 박스 콜라이더가 있음.</li>
<li><strong>증상:</strong> 몬스터가 공격 중이 아님에도 플레이어가 몬스터 근처(무기 콜라이더 영역)에 가려고 하면 &#8216;투명한 벽&#8217;에 막힌 것처럼 밀려남.</li>
<li><strong>의문:</strong> 트리거(<code>isTrigger</code>)는 물리적 충돌을 일으키지 않아야 하는데 왜 <code>CharacterController</code>는 이를 벽으로 인식하는가?</li>
</ul>
<hr />
<h2>2. 원인 분석: 복합 콜라이더(Compound Collider)와 소유권</h2>
<p>유니티 물리 엔진(PhysX)은 <strong>부모에게 Rigidbody가 있고 자식에게 Colliders가 있는 경우</strong> 이를 하나의 <strong>단일 물리 유닛(Actor)</strong>으로 취급합니다.</p>
<h3>핵심 매커니즘:</h3>
<ol>
<li><strong>메시지 통합:</strong> 자식 콜라이더에서 발생하는 모든 충돌 이벤트(<code>OnTriggerEnter</code> 등)는 Rigidbody가 있는 부모 오브젝트로 전달됩니다.</li>
<li><strong>레이어 간섭 (The Trap):</strong> 유니티의 <code>CharacterController</code>는 물리 연산 시 &#8220;이 Actor(Rigidbody)와 내가 부딪혀야 하는가?&#8221;를 먼저 판단합니다. </li>
<li>만약 <strong>부모(Rigidbody)의 레이어</strong>가 플레이어와 충돌하도록 설정되어 있다면, 물리 엔진은 그 리지드바디에 속한 <strong>모든 콜라이더(자식 트리거 포함) 영역</strong>을 &#8220;안전을 위해 진입을 막아야 할 물리적 공간&#8221;으로 과하게 인식해 버립니다.</li>
</ol>
<hr />
<h2>3. 해결 전략 (Action Plan)</h2>
<h3>단계 1: 레이어 충돌 매트릭스 최적화 (가장 중요)</h3>
<p>액션 게임(하데스 스타일)에서는 캐릭터 본체끼리 밀어내는 물리력을 제거하는 것이 조작감 면에서 유리합니다.</p>
<ul>
<li><strong>설정:</strong> <code>Project Settings &gt; Physics &gt; Layer Collision Matrix</code></li>
<li><strong>조치:</strong> <code>Player</code> 레이어와 <code>Monster</code>(본체) 레이어 간의 충돌 체크를 <strong>해제</strong>합니다.</li>
<li><strong>결과:</strong> 부모의 &#8220;물리적 차단막&#8221;이 사라지면서, 자식인 <code>Monster Weapon</code> 레이어의 트리거가 본래 의도대로(벽이 아닌 감지 영역으로) 작동하게 됩니다.</li>
</ul>
<h3>단계 2: 히트박스 활성화 제어 (성능 및 정확도)</h3>
<p>공격 중이 아닐 때는 물리 엔진이 아예 해당 콜라이더를 무시하도록 코드로 제어합니다.</p>
<ul>
<li><strong>방법:</strong> <code>_isActive</code> 플래그만 사용하는 대신, <code>Collider.enabled = false</code>를 직접 사용합니다.</li>
<li><strong>장점:</strong> 물리 엔진의 공간 쿼리 목록에서 완전히 제외되어 불필요한 연산을 줄이고 <code>CharacterController</code>와의 간섭을 원천 차단합니다.</li>
</ul>
<h3>단계 3: 무기 리지드바디 설정</h3>
<p>자식 오브젝트(무기)에 리지드바디가 꼭 필요하다면 반드시 <strong><code>Is Kinematic = true</code></strong>로 설정해야 합니다. Non-Kinematic 리지드바디는 트리거일지라도 물리적 반발력을 발생시킬 확률이 높습니다.</p>
<hr />
<h2>4. 최종 결과 코드 예시 (Hitbox.cs)</h2>
<pre><code class="language-csharp">public void Activate(DamageData data)
{
    _currentDamageData = data;
    _hitTargets.Clear();
    _isActive = true;
    if (_collider) _collider.enabled = true; // 물리 엔진에 등록
}

public void Deactivate()
{
    _isActive = false;
    _hitTargets.Clear();
    if (_collider) _collider.enabled = false; // 물리 엔진에서 제거
}</code></pre>
<h2>요약</h2>
<blockquote>
<p><strong>&#8220;부모 리지드바디의 레이어가 자식 콜라이더의 물리적 성질을 결정한다.&#8221;</strong>
플레이어를 밀어내지 않으면서 트리거 판정만 남기고 싶다면, 부모 레이어의 충돌 체크를 끄고 자식 레이어의 트리거만 활용하십시오.</p>
</blockquote>]]></content:encoded>
					
					<wfw:commentRss>https://crowlib.com/2026/03/10/unity-tip-%eb%b3%b5%ed%95%a9-%ec%bd%9c%eb%9d%bc%ec%9d%b4%eb%8d%94%ec%99%80-charactercontroller%ec%9d%98-%eb%ac%bc%eb%a6%ac-%ea%b0%84%ec%84%ad-%ed%95%b4%ea%b2%b0/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
