<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>shine의 개발 노트</title>
    <link>https://shine94.tistory.com/</link>
    <description>게임 서버 개발자, 샤인의 IT 공부 노트</description>
    <language>ko</language>
    <pubDate>Wed, 19 Aug 2026 21:05:57 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>shine94</managingEditor>
    <image>
      <title>shine의 개발 노트</title>
      <url>https://tistory1.daumcdn.net/tistory/3519881/attach/06b9d4fd89f14c0abf3ee857494cc20d</url>
      <link>https://shine94.tistory.com</link>
    </image>
    <item>
      <title>클로드 AI 연동 이야기</title>
      <link>https://shine94.tistory.com/469</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt; 최근 지인과 이야기 하면서 AI 이야기가 나왔다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사실 ChatGPT로 충분하다고 생각했는데, 클로드가 훨씬 낫다며 한번 써보길 권유받았다. 나는 초창기부터 ChatGPT를 구독하며 내 정보를 많이 넣어준 만큼 나에게 맞춰져 왔고, 꽤 효율적으로 써왔다고 자부하던 참이었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;(헛소리를 부정하는 건 아니다, 실제로 가끔 거짓말을 걸러내면서 스스로 검열해온 건 사실이니까)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;초안을 받으면 그중 틀린 부분만 공식 문서와 근거를 요청해서 다시 받고, 헛소리는 피드백하며 오랜 기간 맞춰온 덕에 꽤 그럴싸해졌다고 자부할 수 있었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그러나 같은 가격에 그런 번거로움을 덜 수 있다기에, 이번엔 클로드를 한번 써보기로 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;클로드는 IDE와도 연동이 가능하다고 해서, 마침 쓰고 있던 라이더와 연동해봤다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;순서는 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;1. 파일 &amp;gt; 설정 &amp;gt; 플러그인 &amp;gt; Claude Code 설치&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2298&quot; data-origin-height=&quot;1184&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tJLcr/dJMcadimK5Z/Cy89woxaXZ8fF90b5AbkE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tJLcr/dJMcadimK5Z/Cy89woxaXZ8fF90b5AbkE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tJLcr/dJMcadimK5Z/Cy89woxaXZ8fF90b5AbkE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtJLcr%2FdJMcadimK5Z%2FCy89woxaXZ8fF90b5AbkE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;633&quot; height=&quot;326&quot; data-origin-width=&quot;2298&quot; data-origin-height=&quot;1184&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;2. 설치 후 Rider를 재시작하면 툴 윈도우나 사이드바에 Claude Code가 나타남&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2556&quot; data-origin-height=&quot;129&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bq1YBq/dJMcabrhNYw/3zd9maZ334aCfbF1u53Pf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bq1YBq/dJMcabrhNYw/3zd9maZ334aCfbF1u53Pf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bq1YBq/dJMcabrhNYw/3zd9maZ334aCfbF1u53Pf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbq1YBq%2FdJMcabrhNYw%2F3zd9maZ334aCfbF1u53Pf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;580&quot; height=&quot;29&quot; data-origin-width=&quot;2556&quot; data-origin-height=&quot;129&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다만 막상 플러그인을 설치하고 나니, 화면에 이런 안내 문구가 떴다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2395&quot; data-origin-height=&quot;475&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bD6CW4/dJMcahrxGli/09LMlE7zzyjP56WmIqt7aK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bD6CW4/dJMcahrxGli/09LMlE7zzyjP56WmIqt7aK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bD6CW4/dJMcahrxGli/09LMlE7zzyjP56WmIqt7aK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbD6CW4%2FdJMcahrxGli%2F09LMlE7zzyjP56WmIqt7aK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2395&quot; height=&quot;475&quot; data-origin-width=&quot;2395&quot; data-origin-height=&quot;475&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt; 즉, 이 플러그인은 껍데기였고, 진짜 알맹이가 필요했다. Claude Code CLI를 터미널에 따로 깔아야 하는 거였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt; 이왕 하는 김에 PowerShell을 관리자 모드로 열어서 설치를 진행했다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1783238620755&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;irm https://claude.ai/install.ps1 | iex&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;설치는 순조롭게 끝났고 버전을 확인해봤다. 그런데 인식이 되지 않았다. 확인해보니 경로 설정을 하지 않아서였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;아래의 경로를 설정한 후 해결이 되었다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1783238696912&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$env:Path += &quot;;$env:USERPROFILE\.local\bin&quot;
claude --version&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;다만 이 방법은 터미널을 닫으면 초기화되는 임시 조치라, 나중에 환경 변수에 영구 등록도 해뒀다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1393&quot; data-origin-height=&quot;2067&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xbkbR/dJMcahygXpB/NW8A81CfQgKAEXTELOFSP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xbkbR/dJMcahygXpB/NW8A81CfQgKAEXTELOFSP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xbkbR/dJMcahygXpB/NW8A81CfQgKAEXTELOFSP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxbkbR%2FdJMcahygXpB%2FNW8A81CfQgKAEXTELOFSP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1393&quot; height=&quot;2067&quot; data-origin-width=&quot;1393&quot; data-origin-height=&quot;2067&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;오랜 기간 맞춰온 ChatGPT를 두고 갈아탄다는 게 조금 아쉽긴 했지만, 결국 구독했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;그런데 의외였던 건, 말투였다. ChatGPT는 그 톤 하나 맞추는 데도 꽤 오랜 시간이 걸렸는데, 클로드는 처음부터 말투가 마음에 들었다. 이제부터는 클로드에 맞춰가는 시간이 시작된 셈이지만, 시작이 나쁘지 않다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT공부</category>
      <author>shine94</author>
      <guid isPermaLink="true">https://shine94.tistory.com/469</guid>
      <comments>https://shine94.tistory.com/469#entry469comment</comments>
      <pubDate>Sun, 5 Jul 2026 17:12:34 +0900</pubDate>
    </item>
    <item>
      <title>[Rider] 여러 개의 프로젝트를 동시에 실행하는 방법</title>
      <link>https://shine94.tistory.com/468</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;u&gt;&lt;b&gt;1. 실행/디버그 구성 편집&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;[방법 1] 실행 버튼 드롭다운 &amp;gt; 목록 하단의 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;구성 편집&lt;/span&gt; 선택&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;[방법 2] 상단 메뉴 실행 &amp;gt; &lt;span style=&quot;background-color: #f6e199;&quot;&gt;구성 편집&lt;/span&gt;&amp;nbsp;선택&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2210&quot; data-origin-height=&quot;1147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Y580e/dJMcaaKxix2/PpFCKBKue9QDhUsnNZu1kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Y580e/dJMcaaKxix2/PpFCKBKue9QDhUsnNZu1kK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Y580e/dJMcaaKxix2/PpFCKBKue9QDhUsnNZu1kK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FY580e%2FdJMcaaKxix2%2FPpFCKBKue9QDhUsnNZu1kK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2210&quot; height=&quot;1147&quot; data-origin-width=&quot;2210&quot; data-origin-height=&quot;1147&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;u&gt;&lt;b&gt;2. 복합 실행 구성 추가&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;실행/디버그 구성 창에서 + 버튼 &amp;gt; &lt;span style=&quot;background-color: #f6e199;&quot;&gt;복합&lt;/span&gt; 선택&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1392&quot; data-origin-height=&quot;1254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WLztS/dJMcaihu9Js/amuxiiWmNcPeLeX4UlFNK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WLztS/dJMcaihu9Js/amuxiiWmNcPeLeX4UlFNK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WLztS/dJMcaihu9Js/amuxiiWmNcPeLeX4UlFNK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWLztS%2FdJMcaihu9Js%2FamuxiiWmNcPeLeX4UlFNK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1392&quot; height=&quot;1254&quot; data-origin-width=&quot;1392&quot; data-origin-height=&quot;1254&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;u&gt;&lt;b&gt;3. 복합 실행 구성 설정&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;이름 설정 &amp;gt; + 버튼을 눌러 함께 실행할 프로젝트 추가 &amp;gt; 확인&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;1282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UiA6m/dJMcadf8Pzw/OhQ9xKhvMnFe6V9VkXtnC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UiA6m/dJMcadf8Pzw/OhQ9xKhvMnFe6V9VkXtnC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UiA6m/dJMcadf8Pzw/OhQ9xKhvMnFe6V9VkXtnC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUiA6m%2FdJMcadf8Pzw%2FOhQ9xKhvMnFe6V9VkXtnC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1380&quot; height=&quot;1282&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;1282&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>업무_메모</category>
      <author>shine94</author>
      <guid isPermaLink="true">https://shine94.tistory.com/468</guid>
      <comments>https://shine94.tistory.com/468#entry468comment</comments>
      <pubDate>Wed, 3 Dec 2025 14:54:57 +0900</pubDate>
    </item>
    <item>
      <title>[MMORPG 게임 개발(C#, Unity)] Part 4. 네트워크 프로그래밍</title>
      <link>https://shine94.tistory.com/467</link>
      <description>&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333; text-align: start;&quot;&gt;* 해당 글은 게임 프로그래머 입문 올인원 강의를 보고 정리한 글입니다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://www.inflearn.com/roadmaps/355#introduce&quot;&gt;https://www.inflearn.com/roadmaps/355#introduce&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1748330105916&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;MMORPG 게임 개발, 켠김에 끝판왕까지! (유니티 + C#) 로드맵 - 인프런&quot; data-og-description=&quot;C#, Unity 스킬을 학습할 수 있는 게임 개발 로드맵을 인프런에서 만나보세요.&quot; data-og-host=&quot;www.inflearn.com&quot; data-og-source-url=&quot;https://www.inflearn.com/roadmaps/355#introduce&quot; data-og-url=&quot;https://www.inflearn.com/roadmaps/355&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/JFj0m/hyY1k48yk3/hkFVvRvDAmpODC3fkIwti1/img.png?width=600&amp;amp;height=314&amp;amp;face=0_0_600_314,https://scrap.kakaocdn.net/dn/bR9fuM/hyY0peza50/ZiMLCCaOUj6mbBwnk1KY5k/img.png?width=600&amp;amp;height=314&amp;amp;face=0_0_600_314,https://scrap.kakaocdn.net/dn/r25te/hyY06FPujw/Me1USceq10inrUKQwdMSJ0/img.jpg?width=1100&amp;amp;height=1329&amp;amp;face=0_0_1100_1329&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/roadmaps/355#introduce&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.inflearn.com/roadmaps/355#introduce&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/JFj0m/hyY1k48yk3/hkFVvRvDAmpODC3fkIwti1/img.png?width=600&amp;amp;height=314&amp;amp;face=0_0_600_314,https://scrap.kakaocdn.net/dn/bR9fuM/hyY0peza50/ZiMLCCaOUj6mbBwnk1KY5k/img.png?width=600&amp;amp;height=314&amp;amp;face=0_0_600_314,https://scrap.kakaocdn.net/dn/r25te/hyY06FPujw/Me1USceq10inrUKQwdMSJ0/img.jpg?width=1100&amp;amp;height=1329&amp;amp;face=0_0_1100_1329');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;MMORPG 게임 개발, 켠김에 끝판왕까지! (유니티 + C#) 로드맵 - 인프런&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;C#, Unity 스킬을 학습할 수 있는 게임 개발 로드맵을 인프런에서 만나보세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.inflearn.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;소켓 프로그래밍&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;(1) Listener 소켓 준비&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;(2) Bind (서버 주소/Port를 소켓에 연동)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;(3) Listen&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;(4) Accept&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;TCP&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;전송 순서가 보장된다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;분실이 일어나면 책임지고 다시 전송한다 &amp;rarr; 신뢰성이 좋다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;전송할 상황이 아니면 일부만 보낸다(흐름/혼잡 제어)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;고려할 것이 많다보니 속도는 UDP보다 느리다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;UDP&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;연결이라는 개념이 없다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;분실에 대한 책임이 없다 &lt;span style=&quot;text-align: start;&quot;&gt;&amp;rarr; 신뢰성이 나쁘다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;전송 순서가 보장되지 않는다&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp; &amp;nbsp;단순하기 때문에 속도는 TCP보다 빠르다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>게임프로그래밍/Unity_C#</category>
      <category>c#과 유니티로 만드는 mmorpg 게임 개발</category>
      <author>shine94</author>
      <guid isPermaLink="true">https://shine94.tistory.com/467</guid>
      <comments>https://shine94.tistory.com/467#entry467comment</comments>
      <pubDate>Fri, 10 Oct 2025 01:11:31 +0900</pubDate>
    </item>
    <item>
      <title>[헤드퍼스트 C#] Chapter 5. 데이터 기밀 유지하기</title>
      <link>https://shine94.tistory.com/466</link>
      <description>&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* 해당 글은 시작하세요! 헤드퍼스트 C# 도서를 읽고 정리한 글입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://product.kyobobook.co.kr/detail/S000211338172&quot;&gt;https://product.kyobobook.co.kr/detail/S000211338172&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1751245834678&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;헤드 퍼스트 C# | 앤드류 스텔만 - 교보문고&quot; data-og-description=&quot;헤드 퍼스트 C# | 상상을 초월하는 객체지향 C# 학습법 직관적인 설명과 다채로운 구성으로 생생하게 체험하는 C# 프로그래밍재치 넘치는 설명과 틀에 박히지 않은 구성으로 복잡한 개념도 쉽게 &quot; data-og-host=&quot;product.kyobobook.co.kr&quot; data-og-source-url=&quot;https://product.kyobobook.co.kr/detail/S000211338172&quot; data-og-url=&quot;https://product.kyobobook.co.kr/detail/S000211338172&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dpAwW3/hyZfsPBlWd/AWfJGxbhvaXC74K0BebKnK/img.jpg?width=458&amp;amp;height=553&amp;amp;face=290_58_369_145,https://scrap.kakaocdn.net/dn/bgxWH1/hyZf8csUfN/UDiY4YXLkLgWtvYUhjlsDK/img.jpg?width=458&amp;amp;height=553&amp;amp;face=290_58_369_145,https://scrap.kakaocdn.net/dn/lkExc/hyZbnWII9g/aBUs0K8K920qnEoGuIrmzK/img.png?width=335&amp;amp;height=335&amp;amp;face=0_0_335_335&quot;&gt;&lt;a href=&quot;https://product.kyobobook.co.kr/detail/S000211338172&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://product.kyobobook.co.kr/detail/S000211338172&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dpAwW3/hyZfsPBlWd/AWfJGxbhvaXC74K0BebKnK/img.jpg?width=458&amp;amp;height=553&amp;amp;face=290_58_369_145,https://scrap.kakaocdn.net/dn/bgxWH1/hyZf8csUfN/UDiY4YXLkLgWtvYUhjlsDK/img.jpg?width=458&amp;amp;height=553&amp;amp;face=290_58_369_145,https://scrap.kakaocdn.net/dn/lkExc/hyZbnWII9g/aBUs0K8K920qnEoGuIrmzK/img.png?width=335&amp;amp;height=335&amp;amp;face=0_0_335_335');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;헤드 퍼스트 C# | 앤드류 스텔만 - 교보문고&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;헤드 퍼스트 C# | 상상을 초월하는 객체지향 C# 학습법 직관적인 설명과 다채로운 구성으로 생생하게 체험하는 C# 프로그래밍재치 넘치는 설명과 틀에 박히지 않은 구성으로 복잡한 개념도 쉽게&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;product.kyobobook.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://github.com/head-first-csharp/fourth-edition&quot;&gt;https://github.com/head-first-csharp/fourth-edition&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1751245836121&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - head-first-csharp/fourth-edition: Code and graphics for the projects in the 4th edition of Head First C#&quot; data-og-description=&quot;Code and graphics for the projects in the 4th edition of Head First C# - head-first-csharp/fourth-edition&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/head-first-csharp/fourth-edition&quot; data-og-url=&quot;https://github.com/head-first-csharp/fourth-edition&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/UR66Q/hyZchoy4Zu/AfofyPNmgXljGNKE97kpvk/img.png?width=1280&amp;amp;height=640&amp;amp;face=828_118_1088_402,https://scrap.kakaocdn.net/dn/efc7FG/hyZgbG1niY/RSQ6bJTRoyKTKaFfoZPiaK/img.png?width=1280&amp;amp;height=640&amp;amp;face=828_118_1088_402&quot;&gt;&lt;a href=&quot;https://github.com/head-first-csharp/fourth-edition&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/head-first-csharp/fourth-edition&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/UR66Q/hyZchoy4Zu/AfofyPNmgXljGNKE97kpvk/img.png?width=1280&amp;amp;height=640&amp;amp;face=828_118_1088_402,https://scrap.kakaocdn.net/dn/efc7FG/hyZgbG1niY/RSQ6bJTRoyKTKaFfoZPiaK/img.png?width=1280&amp;amp;height=640&amp;amp;face=828_118_1088_402');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - head-first-csharp/fourth-edition: Code and graphics for the projects in the 4th edition of Head First C#&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Code and graphics for the projects in the 4th edition of Head First C# - head-first-csharp/fourth-edition&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;*&amp;nbsp;&lt;u&gt;&lt;b&gt;캡슐화(encapsulation)&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;다른 클래스가 의도와는 다르게 값을 변경하거나 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;다른 클래스의 멤버를 잘못 사용하는 상황을 방지해서 코드를 안전하게 지켜준다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;속성(property)&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;사용할 때는 필드처럼 보이고 내부 실행은 메서드처럼 작동하는 클래스 멤버이다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;문자열 보간(string interpolation)&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;문자열 결합을 더 읽기 쉽게 해준다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;이 기능을 사용하려면 문자열 앞에 $ 기호를 붙인 다음 중괄호 안에 출력할 값을 넣으면 된다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;클래스의 모든 메서드는 유일한 시그니처(signature)를 가진다&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;객체 이니셜라이저에서 속성을 초기화할 수 있다&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;개발자가 정의하지 않아도 모든 클래스에는 생성자가 있다&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;private 생성자를 추가해서 다른 클래스가 클래스를 인스턴스화하는 것을 막을 수 있다&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT공부/IT서적</category>
      <category>헤드퍼스트 c#</category>
      <author>shine94</author>
      <guid isPermaLink="true">https://shine94.tistory.com/466</guid>
      <comments>https://shine94.tistory.com/466#entry466comment</comments>
      <pubDate>Mon, 7 Jul 2025 08:55:01 +0900</pubDate>
    </item>
    <item>
      <title>[Unity] 벡터의 내적(Dot Product)</title>
      <link>https://shine94.tistory.com/465</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://www.youtube.com/watch?v=4-76jesTq2I&quot;&gt;https://www.youtube.com/watch?v=4-76jesTq2I&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=4-76jesTq2I&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/YtbaN/hyZf5OckoJ/C3Cxu1tqMdZJtanIpv1jn0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=786_118_930_274,https://scrap.kakaocdn.net/dn/x3kCJ/hyZfYhebpw/IUsCFVKTZSEjcNZ6lXzHkK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=786_118_930_274&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;수많은 의미가 생략된 &quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/4-76jesTq2I&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;이 블로그는 두 벡터가 모두 정규화(normalized)된 경우, 즉 길이가 1인 단위 벡터일 때의 내적 결과를 기준으로 한다&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;ㄴ 일반적인 벡터끼리의 내적은 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;a &amp;middot; b = |a| * |b| * cos(&amp;theta;)&lt;/span&gt;이다&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;ㄴ 따라서 벡터 길이가 1일 때만 내적 값이 -1 ~ 1 사이가 된다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;벡터의 내적(Dot Product)&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;두 방향 벡터가 얼마나 같은 방향을 향하고 있는지를 숫자로 표현해주는 도구이다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;두 벡터가 같은 방향일 수록 1에 가까워지고, 반대일수록 -1에 가까워진다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;letter-spacing: 0px; border-collapse: collapse; width: 60.5821%; height: 221px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 14.3156%; height: 21px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;b&gt; 각도(&amp;theta;) &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.5424%; height: 21px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;b&gt;내적 값(dot) &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 34.7466%; height: 21px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;b&gt; 방향 관계 설명 &lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 14.3156%; height: 21px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;0&amp;deg;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.5424%; height: 21px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;1.0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 34.7466%; height: 21px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;완전히 같은 방향&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 14.3156%; height: 21px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;90&amp;deg;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.5424%; height: 21px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;0.0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 34.7466%; height: 21px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;수직(측면)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 14.3156%; height: 21px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;180&amp;deg;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 16.5424%; height: 21px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;-1.0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 34.7466%; height: 21px; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;완전히 반대 방향&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1073&quot; data-origin-height=&quot;784&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bE4UeD/btsO2l8K6PK/sqr0hXyNlcfbe9WNxgtQYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bE4UeD/btsO2l8K6PK/sqr0hXyNlcfbe9WNxgtQYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bE4UeD/btsO2l8K6PK/sqr0hXyNlcfbe9WNxgtQYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbE4UeD%2FbtsO2l8K6PK%2Fsqr0hXyNlcfbe9WNxgtQYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1073&quot; height=&quot;784&quot; data-origin-width=&quot;1073&quot; data-origin-height=&quot;784&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;937&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SlVeD/btsO1zfFLDF/cKEZziZOafumhV6UaRtqkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SlVeD/btsO1zfFLDF/cKEZziZOafumhV6UaRtqkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SlVeD/btsO1zfFLDF/cKEZziZOafumhV6UaRtqkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSlVeD%2FbtsO1zfFLDF%2FcKEZziZOafumhV6UaRtqkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;647&quot; height=&quot;937&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;937&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;내적은 벡터의 길이가 아닌, 두 방향이 얼마나 유사한지를 수치로 판단하는 도구임을 명심하자!!&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;[예를 들어, 거리를 구하고 싶다면]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;두 위치 백터의 차를 구하면, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;방향 벡터&lt;/span&gt;를 얻을 수 있다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;(이 벡터는 거리와 방향 정보를 모두 포함하고 있다)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;구한 거리의 벡터의 크기(magnitude)&lt;/span&gt;를 구하면 두 위치 간의 실제 거리이고,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;구한 거리의 벡터를 정규화(normalized vector)&lt;/span&gt;하면 방향만 남긴 단위 벡터가 된다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;transform.forward&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;길이가 1인 단위 벡터(normalized vector)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;magnitude는 항상 양수이고, 방향은 부호를 가진다&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;실제 사용 예제&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1751523047784&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Vector3 toTarget = (target.position - transform.position).normalized;
float dot = Vector3.Dot(transform.forward, toTarget);
if (dot &amp;gt; 0.7f)
    Debug.Log(&quot;바라보고 있음&quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT공부/개념</category>
      <author>shine94</author>
      <guid isPermaLink="true">https://shine94.tistory.com/465</guid>
      <comments>https://shine94.tistory.com/465#entry465comment</comments>
      <pubDate>Thu, 3 Jul 2025 15:11:09 +0900</pubDate>
    </item>
    <item>
      <title>[Unity] 사인 곡선을 활용한 진동 표현 이해하기</title>
      <link>https://shine94.tistory.com/464</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;진동&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;어떤 물체가 중심값을 기준으로 좌우 또는 위아래로 반복적으로 움직이는 현상을 의미한다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;[유니티에서 진동은 언제 쓰일까?]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;오브젝트 좌우로 흔들기&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;ㄴ x = base + sin(theta)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;위아래로 둥둥 뜨게 하기&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;ㄴ y = base + sin(theta)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;크기나 색 등을 부드럽게 바꾸기&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;ㄴ scale = 1 + sin(theta) * 0.2f&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;delta(델타)&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;변화량&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;수학, 물리, 프로그래밍에서 델타는 값이 얼마나 변했는지(차이)를 뜻한다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;변화된 값 또는 이전 값과의 차이를 의미하는 접두어로 많이 사용한다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;[예]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;deltaTime&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;시간의 변화량, 한 프레임 동안 흐른 시간(초)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;deltaPosition&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;위치의 변화량&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;deltaAngle&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;회전각의 변화량&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;왜 삼각함수가 진동과 연관이 있을까?&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;sin, cos는 삼각형에서 시작했지만, 원 위에서 점이 움직이는 패턴이다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;시간에 따라&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;sin(&amp;theta;) &amp;rarr; 아래에서 시작 &amp;rarr; 올라갔다 내려가고를 반복&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;cos(&amp;theta;) &amp;rarr; 위에서 시작 &amp;rarr; 내려갔다가 올라가고를 반복&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;[그럼 탄젠트는!?]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;tan(&amp;theta;) = sin(&amp;theta;) / cos(&amp;theta;) &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;기울기(= 기울어진 정도)를 나타내며, 진동 표현에는 일반적으로 사용되지 않는다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;회전각, 시야 각도 계산, 카메라 시선 처리 등에 더 많이 쓰인다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;(+) tan(&amp;theta;)는 &amp;pi;/2와 같은 특정 각도에서 값이 무한대로 발산하기 때문에, 진동 표현에는 부적합하다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;탄젠트와 사인과 코사인의 차이는 명확한데 사인과 코사인은 헷갈린다!&lt;/b&gt;&lt;/u&gt;  &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;둘 다 주기 함수고 -1 ~ 1 사이의 값을 주기적으로 반복한다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;둘 다 진동 구현에 똑같이 쓸 수 있다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;[차이점은 위상 차이다(phase difference)]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;사인은 0에서 시작해서 위로 올라가고&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;코사인은 1에서 시작해서 내려간다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 54.8837%; height: 102px;&quot; border=&quot;1&quot; data-end=&quot;518&quot; data-start=&quot;317&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 17px; width: 13.2558%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;b&gt;&amp;theta;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 17px; width: 21.7442%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;b&gt;sin(&amp;theta;)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 17px; width: 19.8837%;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;b&gt;cos(&amp;theta;)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot; data-end=&quot;402&quot; data-start=&quot;374&quot;&gt;
&lt;td style=&quot;height: 17px; text-align: center; width: 13.2558%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;379&quot; data-start=&quot;374&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;b&gt;0&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; width: 21.7442%; text-align: center;&quot; data-end=&quot;390&quot; data-start=&quot;379&quot; data-col-size=&quot;sm&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; width: 19.8837%; text-align: center;&quot; data-end=&quot;402&quot; data-start=&quot;390&quot; data-col-size=&quot;sm&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot; data-end=&quot;431&quot; data-start=&quot;403&quot;&gt;
&lt;td style=&quot;height: 17px; text-align: center; width: 13.2558%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;409&quot; data-start=&quot;403&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;b&gt;&amp;pi;/2&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; width: 21.7442%; text-align: center;&quot; data-end=&quot;419&quot; data-start=&quot;409&quot; data-col-size=&quot;sm&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; width: 19.8837%; text-align: center;&quot; data-end=&quot;431&quot; data-start=&quot;419&quot; data-col-size=&quot;sm&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;0&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot; data-end=&quot;460&quot; data-start=&quot;432&quot;&gt;
&lt;td style=&quot;height: 17px; text-align: center; width: 13.2558%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;438&quot; data-start=&quot;432&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;b&gt;&amp;pi;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; width: 21.7442%; text-align: center;&quot; data-end=&quot;448&quot; data-start=&quot;438&quot; data-col-size=&quot;sm&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; width: 19.8837%; text-align: center;&quot; data-end=&quot;460&quot; data-start=&quot;448&quot; data-col-size=&quot;sm&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;-1&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot; data-end=&quot;489&quot; data-start=&quot;461&quot;&gt;
&lt;td style=&quot;height: 17px; text-align: center; width: 13.2558%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;468&quot; data-start=&quot;461&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;b&gt;3&amp;pi;/2&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; width: 21.7442%; text-align: center;&quot; data-end=&quot;477&quot; data-start=&quot;468&quot; data-col-size=&quot;sm&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;-1&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; width: 19.8837%; text-align: center;&quot; data-end=&quot;489&quot; data-start=&quot;477&quot; data-col-size=&quot;sm&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;0&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot; data-end=&quot;518&quot; data-start=&quot;490&quot;&gt;
&lt;td style=&quot;height: 17px; text-align: center; width: 13.2558%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;496&quot; data-start=&quot;490&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;b&gt;2&amp;pi;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; width: 21.7442%; text-align: center;&quot; data-end=&quot;506&quot; data-start=&quot;496&quot; data-col-size=&quot;sm&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 17px; width: 19.8837%; text-align: center;&quot; data-end=&quot;518&quot; data-start=&quot;506&quot; data-col-size=&quot;sm&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;[따라서]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;사인과 코사인은 본질적으로 동일한 형태의 함수이며, 단지 시작 시점(위상)이 다르다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;크게 다르다라고 느껴질 상황은 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;거의 없고 동일한 진동 기능을 수행할 수 있다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;[그래도 굳이 실전에서 차이를 느끼고 싶다면......?]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;(1) 움직임의 시작 위치를 명확하게 연출할 때&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;등장하자마자 위에서부터 떨어져야 한다면 &lt;span style=&quot;text-align: start;&quot;&gt;&amp;rarr; 코사인&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;중앙에서 부드럽게 시작해야 한다면 &lt;span style=&quot;text-align: start;&quot;&gt;&amp;rarr; 사인&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;이럴 때는 시각적으로 차이가 느껴질 수 있다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;(2) 두 개의 파형(시간에 따라 값이 변화하는 모양)을 조합해서 움직임을 만들 때&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;사인과 코사인을 함께 쓸 때는 위상 차이가 움직임에 영향을 준다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;하지만 단독으로 진동만 구현할 때는 거의 차이가 없다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;</description>
      <category>IT공부/개념</category>
      <author>shine94</author>
      <guid isPermaLink="true">https://shine94.tistory.com/464</guid>
      <comments>https://shine94.tistory.com/464#entry464comment</comments>
      <pubDate>Tue, 1 Jul 2025 20:33:44 +0900</pubDate>
    </item>
    <item>
      <title>[멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(2025.06.23-2025.06.27)</title>
      <link>https://shine94.tistory.com/463</link>
      <description>&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;*&amp;nbsp;&lt;span style=&quot;text-align: start;&quot;&gt;해당 글은 유니티 게임 개발 수업 후&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;정리한 글입니다&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://bootcamp.likelion.net/school/kdt-ugm-5th&quot;&gt;https://bootcamp.likelion.net/school/kdt-ugm-5th&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1751110296860&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;유니티 게임 개발 5기 : 멋사 부트캠프&quot; data-og-description=&quot;개발부터 출시까지! 나만의 게임을 세상에 선보이는 유니티 부트캠프&quot; data-og-host=&quot;bootcamp.likelion.net&quot; data-og-source-url=&quot;https://bootcamp.likelion.net/school/kdt-ugm-5th&quot; data-og-url=&quot;https://bootcamp.likelion.net/school/kdt-ugm-5th&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cp8Wdb/hyZbvtu2XO/B2xdVFrOLjXgXkk0h0asp1/img.png?width=752&amp;amp;height=376&amp;amp;face=0_0_752_376,https://scrap.kakaocdn.net/dn/dlC6zb/hyZf1jTWaF/JnVk7I7Hx1bAC7zTcdSNA0/img.png?width=752&amp;amp;height=376&amp;amp;face=0_0_752_376&quot;&gt;&lt;a href=&quot;https://bootcamp.likelion.net/school/kdt-ugm-5th&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bootcamp.likelion.net/school/kdt-ugm-5th&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cp8Wdb/hyZbvtu2XO/B2xdVFrOLjXgXkk0h0asp1/img.png?width=752&amp;amp;height=376&amp;amp;face=0_0_752_376,https://scrap.kakaocdn.net/dn/dlC6zb/hyZf1jTWaF/JnVk7I7Hx1bAC7zTcdSNA0/img.png?width=752&amp;amp;height=376&amp;amp;face=0_0_752_376');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;유니티 게임 개발 5기 : 멋사 부트캠프&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;개발부터 출시까지! 나만의 게임을 세상에 선보이는 유니티 부트캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bootcamp.likelion.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;&lt;span style=&quot;text-align: start;&quot;&gt;Update()&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;일반적인 작업용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;이동 작업을 transform으로 직접 조작할 경우 여기서 처리하나,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;이 방식은 프레임 스킵이 발생하면 그만큼 렌더링이 지연되어 지연되고, &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;지연된 만큼 한 번에 이동되기 때문에 &lt;span style=&quot;text-align: start;&quot;&gt;순간이동처럼 보일 수 있다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;또, transform으로 이동하는 경우, 물리 엔진을 거치지 않아 충돌 감지가 발생하지 않는다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;[  그럼 여기서 물리엔진 계산하면 되잖아]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;물리 엔진은 고정된 시간 간격(Fixed Timestep)으로 계산&lt;/span&gt;된다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;대부분 Update 속도가 훨씬 빠르며,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;프레임마다 속도를 갱신하지만, 물리 엔진이 아직 계산을 반영하기 전 상태에서 덮어쓰게 되므로&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;이로 인해 &lt;span style=&quot;text-align: start;&quot;&gt;이동 타이밍과 충돌 판정 타이밍이 엇갈리면서, &lt;/span&gt;불안정한 움직임, 충돌 처리 누락, 끊김 등이 발생할 수 있다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;FixedUpdate()&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;물리 연산 작업용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;Rigidbody를 이용한 물리 기반 작업은 여기서 처리하지 않으면 연산 타이밍이 꼬일 수 있다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;[❓ Why]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;물리 엔진은 고정된 시간 간격으로 계산하기 때문이다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;최종적인 결론&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;입력은 Update에서&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;물리 엔진을 이용한 이동은 FixedUpdate에서&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1751112286465&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;float input;

void Update()
{
	// 입력은 Update에서
	input = Input.GetAxisRaw(&quot;Horizontal&quot;);
}

void FixedUpdate()
{
	// 이동은 FixedUpdate에서
	rb.velocity = new Vector2(input * speed, rb.velocity.y);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;타일맵(Tilemap)&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;이미지를 작은 타일로 나눠 격자 형태로 배치&lt;/span&gt;해서, 큰 배경이나 맵을 효율적으로 구성하는 방식&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;큰 배경 이미지를 통째로 가져가면 메모리 부담이 크지만, &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;작은 이미지를 반복해서 배치하면 동일한 리소스를 재사용하게 되므로 빌드 용량이 훨씬 가벼워진다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;그 결과, 컴파일과 빌드 시간도 줄일 수 있다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;&lt;span style=&quot;text-align: start;&quot;&gt;타일 팔레트(Tile Palette)&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;타일맵 작업을 위해, 타일 이미지를 마치 물감을 팔레트에 올려두듯 정리해 놓는 도구&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;필요한 타일을 여기서 선택해서 씬에 배치할 수 있도록 도와준다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;Window &amp;gt; 2D &amp;gt; Tile Palette&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;664&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eeCBxp/btsOXG5fNKT/6tsZcapN7pkmc5Ps2wO9V0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eeCBxp/btsOXG5fNKT/6tsZcapN7pkmc5Ps2wO9V0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eeCBxp/btsOXG5fNKT/6tsZcapN7pkmc5Ps2wO9V0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeeCBxp%2FbtsOXG5fNKT%2F6tsZcapN7pkmc5Ps2wO9V0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;901&quot; height=&quot;664&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;664&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;Tilemap Collider 2D&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;타일맵마다 개별적인 Collider를 자동 생성해주는 컨포넌트&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;타일 하나마다 Collider가 생성되므로 경계선이 많아지고, 그로 인해 물리 연산이 비효율적이다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;Composite Collider 2D&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;여러 개의 Collider를 하나의 커다란 콜라이더로 합쳐주는 최적화 도구&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;성능 향상과 충돌 경계 단순화를 위해 자주 사용되며, Tilemap Collider 2D와 함께 쓰인다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;[Edge Radius]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;Collider 외곽선의 가장자리를 부드럽게 둥글리는 정도를 나타낸다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;값이 클수록 둥글게 처리되어, 이동 가능한 영역이 그만큼 줄어든다&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1382&quot; data-origin-height=&quot;1175&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpEt9T/btsOVZ6b4lv/YqK2p2SjTgp52wiZbxQOaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpEt9T/btsOVZ6b4lv/YqK2p2SjTgp52wiZbxQOaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpEt9T/btsOVZ6b4lv/YqK2p2SjTgp52wiZbxQOaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpEt9T%2FbtsOVZ6b4lv%2FYqK2p2SjTgp52wiZbxQOaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1382&quot; height=&quot;1175&quot; data-origin-width=&quot;1382&quot; data-origin-height=&quot;1175&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;Rigidbody 2D(Static 설정)&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;정적인 지형용으로 적절한 설정이며, 물리 시뮬레이션 전에 Collider를 미리 생성해두는 방식&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;즉, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;런타임 중에 계산하지 않고, 씬 실행 시점에 이미 계산돼 있어서 성능에 유리&lt;/span&gt;하다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;Composite Collider를 쓰려면 반드시 Rigidbody 2D가 필요하며, 이때는 Static 설정을 쓰는 게 일반적이다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;지금 공부하고 있는 방식은 상하좌우 이동만 가능한 2D 캐릭터 조작 게임으로, 중력이나 회전이 필요하지 않음&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;[따라서]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;물리 엔진에서 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;중력을 0&lt;/span&gt;으로, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;Freeze Rotation의 Z축을 체크&lt;/span&gt;하여 안정적인 이동 구현 가능&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;[만약 중력과 회전이 있다면]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;중력에 의해 콜라이더의 둥근 곡면을 따라 미끄러지거나, 충돌 시 회전이 발생해 구르는 듯한 동작이 나타난다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;둥근 곡면이 없더라도 충돌 시 물리 회전이 적용되어 기울어지거나 옆으로 눕는다&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;649&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dfYSsw/btsOXiDtJoV/mESEDeJfonRCi4iHCh6lz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfYSsw/btsOXiDtJoV/mESEDeJfonRCi4iHCh6lz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfYSsw/btsOXiDtJoV/mESEDeJfonRCi4iHCh6lz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfYSsw%2FbtsOXiDtJoV%2FmESEDeJfonRCi4iHCh6lz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;468&quot; height=&quot;649&quot; data-origin-width=&quot;468&quot; data-origin-height=&quot;649&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;유니티의 UI 이벤트 시스템 인터페이스&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;UI 오브젝트나 Collider가 붙은 GameObject에서만 이벤트가 발생하며,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;반드시 EventSystem과 &lt;span style=&quot;text-align: start;&quot;&gt;Raycaster 구성 필요&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;[정리]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;UI 오브젝트인 경우&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;- EventSystem&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;- Canvas + GraphicRaycaster &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333; text-align: start;&quot;&gt; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;Collider가 붙은 GameObject(2D 기준)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333; text-align: start;&quot;&gt; &amp;nbsp; &amp;nbsp;- EventSystem &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;- Physics2DRaycaster &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;(1) &lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;IPointerDownHandler &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;마우스 버튼 또는 터치가 눌렸을 때 호출됨&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1751115121316&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void OnPointerDown(PointerEventData eventData)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;(2) &lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;IDragHandler&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;마우스 또는 터치를 누르고 움직일 때(= 드래그) 호출됨&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1751115157341&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void OnDrag(PointerEventData eventData)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;(3) &lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;IPointerUpHandler &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;마우스 버튼 또는 터치가 떼어졌을 때 호출됨&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1751115185289&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void OnPointerUp(PointerEventData eventData)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;조이스틱 방향 벡터 코드&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #262626; color: #d0d0d0;&quot;&gt;
&lt;pre class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot;&gt;&lt;code&gt;// direction1(방향 + 거리 포함) &amp;rarr; 정규화 안된 상태
var dragDirection = _currPosition - _startPosition;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://shine94.tistory.com/462&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://shine94.tistory.com/462&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1751122319251&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Unity] 수학과 Unity 관점에서 벡터와 스칼라 정리&quot; data-og-description=&quot;* 수학에서의 백터와 스칼라 (1) 스칼라(Scalar) 크기만 갖는 값 (예) 5m, 섭씨 20도, 256바이트, 4000 칼로리 (2) 벡터(Vector) 크기 + 방향을 갖는 값 (예) 30m/초 동쪽, 약 5마일 북쪽, 힘, 가속도 [정리하자면&quot; data-og-host=&quot;shine94.tistory.com&quot; data-og-source-url=&quot;https://shine94.tistory.com/462&quot; data-og-url=&quot;https://shine94.tistory.com/462&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cov8Yy/hyZf8XEtvf/eQcvG7VTsCXx313zAtK6HK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/n0Edb/hyZbyjpI2J/NDT2xxnUBdAulhgACXK2F0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/Cv78q/hyZciARVm9/4xVxaW9DJZRhHUYEgbddfK/img.jpg?width=300&amp;amp;height=300&amp;amp;face=0_0_300_300&quot;&gt;&lt;a href=&quot;https://shine94.tistory.com/462&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://shine94.tistory.com/462&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cov8Yy/hyZf8XEtvf/eQcvG7VTsCXx313zAtK6HK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/n0Edb/hyZbyjpI2J/NDT2xxnUBdAulhgACXK2F0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/Cv78q/hyZciARVm9/4xVxaW9DJZRhHUYEgbddfK/img.jpg?width=300&amp;amp;height=300&amp;amp;face=0_0_300_300');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Unity] 수학과 Unity 관점에서 벡터와 스칼라 정리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;* 수학에서의 백터와 스칼라 (1) 스칼라(Scalar) 크기만 갖는 값 (예) 5m, 섭씨 20도, 256바이트, 4000 칼로리 (2) 벡터(Vector) 크기 + 방향을 갖는 값 (예) 30m/초 동쪽, 약 5마일 북쪽, 힘, 가속도 [정리하자면&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;shine94.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;magnitude&amp;nbsp;&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;벡터의 길이(방향은 무시됨)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;normalized&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;방향만 유지하고 길이를 1로 만든 벡터&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;조이스틱 드래그 방향 처리 코드&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1751123162069&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public void OnPointerDown(PointerEventData eventData)
{
    _startPosition = eventData.position;
}

public void OnDrag(PointerEventData eventData)
{
    _currPosition = eventData.position;
    var dragDirection = _currPosition - _startPosition;

    // distance : 거리
    // +75f, -75f : X/Y축 조이스틱 입력의 최대값(조이스틱 범위 제한)
    var maxDistance = Mathf.Min(dragDirection.magnitude, 75f);

    // _startPosition : 조이스틱 원래 위치
    // dragDirection.normalized * maxDistance : 드래그 방향값 * 최대 거리 75f
    handlerUI.transform.position = _startPosition + dragDirection.normalized * maxDistance;
}

public void OnPointerUp(PointerEventData eventData)
{
    // 드래그 종료 시 조이스틱 핸들 위치 초기화
    handlerUI.transform.position = Vector2.zero;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;*&amp;nbsp; &lt;u&gt;&lt;b&gt;조이스틱&amp;nbsp;UI&amp;nbsp;구성&amp;nbsp;및&amp;nbsp;설정&amp;nbsp;경로&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;Canvas &amp;gt; Joystick(빈 오브젝트) &amp;gt; Background(조이스틱 배경) &amp;gt; Handle(방향 표시 이미지)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;ㄴ Joystick(빈&amp;nbsp;오브젝트)의&amp;nbsp;Image&amp;nbsp;컴포넌트는&amp;nbsp;투명도&amp;nbsp;0으로&amp;nbsp;설정해야&amp;nbsp;함&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;ForceMode2D &lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;(1) &lt;span style=&quot;background-color: #f6e199;&quot;&gt;Force&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;지속적으로 작용하는 힘(Continuous Force)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;FixedUpdate마다 누적 적용되어 속도를 점점 증가시키는 가속도&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; (예) 바람, 물살처럼 꾸준히 밀어내는 힘&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1751218274026&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rigidbody2D.AddForce(Vector2.right * 10f, ForceMode2D.Force);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;이 경우, FixedUpdate마다 &lt;span style=&quot;background-color: #c1bef9;&quot;&gt;10만큼의 가속도&lt;/span&gt;가 누적되어 점점 빨라진다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;(2) &lt;span style=&quot;background-color: #f6e199;&quot;&gt;Impulse&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;순간적인 충격(Instantaneous Impulse)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;한 순간에 속도를 즉시 변화시키는 힘&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;점프, 충돌, 폭발처럼 짧고 강한 충격을 줄 때 사용&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1751218291238&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rigidbody2D.AddForce(Vector2.up * 10f, ForceMode2D.Impulse);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;이 경우, 한 번만 힘이 적용되며 질량에 따라 속도 변화량이 결정된다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FixedUpdate 마다 반복 적용되지 않고, &lt;span style=&quot;background-color: #c1bef9;&quot;&gt;딱 한 번 즉시 작용&lt;/span&gt;된다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;애니메이션 블렌딩 시 실수했던 점&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;처음에 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;2D Simple Directional&lt;/span&gt;을 선택했는데, 이 블렌드 타입은 &lt;span style=&quot;background-color: #c1bef9;&quot;&gt;방향 값이 180도 이상인 경우를 처리할 수 없다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;수업에서 사용했던 방향 값(예: -1, 0, 1)처럼 양방향 입력이 필요한 경우에는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;2D Freeform Directional&lt;/span&gt;을 선택해야 했다&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;514&quot; data-origin-height=&quot;245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQnCNO/btsOVZee572/D0Xa2BWPPCvmBj26Mwxvk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQnCNO/btsOVZee572/D0Xa2BWPPCvmBj26Mwxvk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQnCNO/btsOVZee572/D0Xa2BWPPCvmBj26Mwxvk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQnCNO%2FbtsOVZee572%2FD0Xa2BWPPCvmBj26Mwxvk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;514&quot; height=&quot;245&quot; data-origin-width=&quot;514&quot; data-origin-height=&quot;245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;AudioSound&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp;동시에 여러 개의 사운드를 재생할 수 없기 때문에, &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;효과음을 겹쳐 재생하려면 각각 AudioSound가 필요하다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp;ㄴ 소리를 중첩시킬 때, 애니메이션의 이벤트와 연결하여 트리거로 활용하기도 한다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;636&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1ZGoC/btsOWHDLeCW/7EHms4SejjJkSEfzWjt5w1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1ZGoC/btsOWHDLeCW/7EHms4SejjJkSEfzWjt5w1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1ZGoC/btsOWHDLeCW/7EHms4SejjJkSEfzWjt5w1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1ZGoC%2FbtsOWHDLeCW%2F7EHms4SejjJkSEfzWjt5w1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;636&quot; height=&quot;596&quot; data-origin-width=&quot;636&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;Time.timeScale(영상 재생 시 배속 조절과 유사한 개념)&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;유니티의 시간의 흐름 속도를 조절할 수 있는 속성이다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;기본 값은 1f이며, 이는 정상적인 시간 흐름이다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;값을 0f으로 설정하면 시간이 완전히 정지되며, 애니메이션, 이동, 물리 처리 등 모두 멈춘다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>게임프로그래밍/Unity_C#</category>
      <category>멋쟁이사자처럼 유니티 게임 개발 5기</category>
      <category>씨샵</category>
      <category>유니티</category>
      <author>shine94</author>
      <guid isPermaLink="true">https://shine94.tistory.com/463</guid>
      <comments>https://shine94.tistory.com/463#entry463comment</comments>
      <pubDate>Mon, 30 Jun 2025 05:39:09 +0900</pubDate>
    </item>
    <item>
      <title>[Unity] 수학과 Unity 관점에서 벡터와 스칼라 정리</title>
      <link>https://shine94.tistory.com/462</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;* &lt;u&gt;&lt;b&gt;수학에서의 백터와 스칼라&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp; &amp;nbsp;(1) &lt;span style=&quot;background-color: #f6e199;&quot;&gt;스칼라(Scalar)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 크기만 갖는 값&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (예) &lt;span style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;&amp;nbsp;5m, &lt;span style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;섭씨 20도, &lt;span style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;256바이트, &lt;span style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;4000 칼로리&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp; &amp;nbsp;(2) &lt;span style=&quot;background-color: #f6e199;&quot;&gt;벡터(Vector) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 크기 + 방향을 갖는 값&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (예) &lt;span style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;30m/초 동쪽, &lt;span style=&quot;background-color: #ffffff; text-align: left;&quot;&gt;약 5마일 북쪽, 힘, 가속도&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;[정리하자면]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp; &amp;nbsp;핵심 차이는 방향의 존재 여부다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;* &lt;u&gt;&lt;b&gt;유니티에서의 Vector3&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp; &amp;nbsp;유니티의 Vector3 구조체는 수학적 벡터 개념을 기반으로 한 자료형이지만,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp; &amp;nbsp;실제 의미는 어떻게 사용하느냐에 따라 달라진다&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1751120213790&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 위치
transform.position = new Vector3(0, 3, 0);

// 방향(this &amp;rarr; target)
Vector3 direction1 = target.position - transform.position;		// 두 위치 차이 벡터
Vector3 direction2 = (target.position - transform.position).normalized;	// 길이를 1로 만들어, 방향만 남긴 단위 벡터(normalized vector)

// 속도 또는 힘의 방향과 크기를 적용할 때(반드시 방향 벡터를 정규화해서 사용)
rigidbody.velocity = direction2 * 3f;
rigidbody.AddForce(direction2 * force);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333; background-color: #99cefa;&quot;&gt;direction1(이동 벡터)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;방향 + &lt;span style=&quot;background-color: #f6e199;&quot;&gt;시작 위치로부터의 거리&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;이동해야 할 거리(크기)가 중요한 경우&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;(예) 목표까지 얼마나 멀리 가야하는지를 중요한 경우, 총알이 목표물까지 날아가는 방향과 거리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic'; background-color: #99cefa;&quot;&gt;direction2(방향 벡터)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;방향만&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;정규화된 단위 벡터(길이 1)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;(예) 어디로 향해야 하는지만 중요한 경우, 캐릭터가 어느 방향을 바라보는가&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;* &lt;u&gt;&lt;b&gt;참고한 문서들&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://www.physicsclassroom.com/class/1dkin/lesson-1/scalars-and-vectors?utm_source=chatgpt.com&quot;&gt;https://www.physicsclassroom.com/class/1dkin/lesson-1/scalars-and-vectors?utm_source=chatgpt.com&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1751121563653&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Scalars and Vectors&quot; data-og-description=&quot;Scalars and Vectors Hold down the T key for 3 seconds to activate the audio accessibility mode, at which point you can click the K key to pause and resume audio. Useful for the Check Your Understanding and See Answers. Physics is a mathematical science. Th&quot; data-og-host=&quot;www.physicsclassroom.com&quot; data-og-source-url=&quot;https://www.physicsclassroom.com/class/1dkin/lesson-1/scalars-and-vectors?utm_source=chatgpt.com&quot; data-og-url=&quot;https://www.physicsclassroom.com/class/1dkin/lesson-1/scalars-and-vectors?utm_source=chatgpt.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/blF1oe/hyZbB1AZlw/IIPxi8R0DpBRGUG21M7kxK/img.jpg?width=2000&amp;amp;height=242&amp;amp;face=0_0_2000_242&quot;&gt;&lt;a href=&quot;https://www.physicsclassroom.com/class/1dkin/lesson-1/scalars-and-vectors?utm_source=chatgpt.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.physicsclassroom.com/class/1dkin/lesson-1/scalars-and-vectors?utm_source=chatgpt.com&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/blF1oe/hyZbB1AZlw/IIPxi8R0DpBRGUG21M7kxK/img.jpg?width=2000&amp;amp;height=242&amp;amp;face=0_0_2000_242');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Scalars and Vectors&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Scalars and Vectors Hold down the T key for 3 seconds to activate the audio accessibility mode, at which point you can click the K key to pause and resume audio. Useful for the Check Your Understanding and See Answers. Physics is a mathematical science. Th&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.physicsclassroom.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://mathinsight.org/vector_introduction?utm_source=chatgpt.com&quot;&gt;https://mathinsight.org/vector_introduction?utm_source=chatgpt.com&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1751121565562&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;An introduction to vectors - Math Insight&quot; data-og-description=&quot;Definition of a vector A vector is an object that has both a magnitude and a direction. Geometrically, we can picture a vector as a directed line segment, whose length is the magnitude of the vector and with an arrow indicating the direction. The direction&quot; data-og-host=&quot;mathinsight.org&quot; data-og-source-url=&quot;https://mathinsight.org/vector_introduction?utm_source=chatgpt.com&quot; data-og-url=&quot;https://mathinsight.org/vector_introduction?utm_source=chatgpt.com&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://mathinsight.org/vector_introduction?utm_source=chatgpt.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://mathinsight.org/vector_introduction?utm_source=chatgpt.com&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;An introduction to vectors - Math Insight&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Definition of a vector A vector is an object that has both a magnitude and a direction. Geometrically, we can picture a vector as a directed line segment, whose length is the magnitude of the vector and with an arrow indicating the direction. The direction&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;mathinsight.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: 'Nanum Gothic';&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://docs.unity3d.com/ScriptReference/Vector3-normalized.html?utm_source=chatgpt.com&quot;&gt;https://docs.unity3d.com/ScriptReference/Vector3-normalized.html?utm_source=chatgpt.com&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT공부/개념</category>
      <author>shine94</author>
      <guid isPermaLink="true">https://shine94.tistory.com/462</guid>
      <comments>https://shine94.tistory.com/462#entry462comment</comments>
      <pubDate>Sat, 28 Jun 2025 23:50:25 +0900</pubDate>
    </item>
    <item>
      <title>[멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(2025.06.16-2025.06.19)</title>
      <link>https://shine94.tistory.com/461</link>
      <description>&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;*&amp;nbsp;&lt;span style=&quot;text-align: start;&quot;&gt;해당 글은 유니티 게임 개발 수업 후&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;정리한 글입니다&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://bootcamp.likelion.net/school/kdt-ugm-5th&quot;&gt;https://bootcamp.likelion.net/school/kdt-ugm-5th&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1751019784556&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;유니티 게임 개발 5기 : 멋사 부트캠프&quot; data-og-description=&quot;개발부터 출시까지! 나만의 게임을 세상에 선보이는 유니티 부트캠프&quot; data-og-host=&quot;bootcamp.likelion.net&quot; data-og-source-url=&quot;https://bootcamp.likelion.net/school/kdt-ugm-5th&quot; data-og-url=&quot;https://bootcamp.likelion.net/school/kdt-ugm-5th&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/9AA3c/hyZboufzSm/lUGmOOQNk7Ja2bu4p6wK4K/img.png?width=752&amp;amp;height=376&amp;amp;face=0_0_752_376,https://scrap.kakaocdn.net/dn/ckPjZJ/hyZfBSZhBl/Tr774EtQG4QKmJwFVKqenK/img.png?width=752&amp;amp;height=376&amp;amp;face=0_0_752_376&quot;&gt;&lt;a href=&quot;https://bootcamp.likelion.net/school/kdt-ugm-5th&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bootcamp.likelion.net/school/kdt-ugm-5th&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/9AA3c/hyZboufzSm/lUGmOOQNk7Ja2bu4p6wK4K/img.png?width=752&amp;amp;height=376&amp;amp;face=0_0_752_376,https://scrap.kakaocdn.net/dn/ckPjZJ/hyZfBSZhBl/Tr774EtQG4QKmJwFVKqenK/img.png?width=752&amp;amp;height=376&amp;amp;face=0_0_752_376');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;유니티 게임 개발 5기 : 멋사 부트캠프&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;개발부터 출시까지! 나만의 게임을 세상에 선보이는 유니티 부트캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bootcamp.likelion.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;형 변환(Type Casting)&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;다른 데이터 타입으로 변환하는 것&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;객체지향 프로그래밍(OOP, Object-Oriented Programming)&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;객체(데이터 + 동작) 단위로 프로그램을 구성하는 방식&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;캡슐화, 상속, 다형성, 추상화가 핵심 개념&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;오버로딩(Overloading)&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;같은 이름의 메서드를 매개변수만 다르게 여러 개 정의하는 것&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt; * &lt;u&gt;&lt;b&gt;상속(Inheritance)&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;부모 클래스의 속성과 기능을 자식 클래스가 물려받는 것&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;가상화(Virtualization)&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;부모 클래스의 메서드를 자식 클래스에서 재정의(override) 할 수 있게 하는 것&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;추상화(Abstraction)&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;공통된 개념만 뽑아 핵심적인 인터페이스만 정의하는 것&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;인터페이스(Interface)&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;메서드 시그니처만 정의하고, 구현은 상속받는 클래스가 담당하는 구조&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;캡슐화(Encapsulation)&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;데이터와 기능을 하나의 객체 안에 묶고 외부에서는 접근을 제한하는 것&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>게임프로그래밍/Unity_C#</category>
      <category>멋쟁이사자처럼 유니티 게임 개발 5기</category>
      <category>씨샵</category>
      <category>유니티</category>
      <author>shine94</author>
      <guid isPermaLink="true">https://shine94.tistory.com/461</guid>
      <comments>https://shine94.tistory.com/461#entry461comment</comments>
      <pubDate>Fri, 27 Jun 2025 19:28:44 +0900</pubDate>
    </item>
    <item>
      <title>[멋쟁이사자처럼부트캠프] 유니티 게임 개발 5기(2025.06.09-2025.06.13)</title>
      <link>https://shine94.tistory.com/460</link>
      <description>&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;*&amp;nbsp;&lt;span style=&quot;text-align: start;&quot;&gt;해당 글은 유니티 게임 개발 수업 후&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;정리한 글입니다&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://bootcamp.likelion.net/school/kdt-ugm-5th&quot;&gt;https://bootcamp.likelion.net/school/kdt-ugm-5th&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1751012575090&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;유니티 게임 개발 5기 : 멋사 부트캠프&quot; data-og-description=&quot;개발부터 출시까지! 나만의 게임을 세상에 선보이는 유니티 부트캠프&quot; data-og-host=&quot;bootcamp.likelion.net&quot; data-og-source-url=&quot;https://bootcamp.likelion.net/school/kdt-ugm-5th&quot; data-og-url=&quot;https://bootcamp.likelion.net/school/kdt-ugm-5th&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/9AA3c/hyZboufzSm/lUGmOOQNk7Ja2bu4p6wK4K/img.png?width=752&amp;amp;height=376&amp;amp;face=0_0_752_376,https://scrap.kakaocdn.net/dn/ckPjZJ/hyZfBSZhBl/Tr774EtQG4QKmJwFVKqenK/img.png?width=752&amp;amp;height=376&amp;amp;face=0_0_752_376&quot;&gt;&lt;a href=&quot;https://bootcamp.likelion.net/school/kdt-ugm-5th&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://bootcamp.likelion.net/school/kdt-ugm-5th&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/9AA3c/hyZboufzSm/lUGmOOQNk7Ja2bu4p6wK4K/img.png?width=752&amp;amp;height=376&amp;amp;face=0_0_752_376,https://scrap.kakaocdn.net/dn/ckPjZJ/hyZfBSZhBl/Tr774EtQG4QKmJwFVKqenK/img.png?width=752&amp;amp;height=376&amp;amp;face=0_0_752_376');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;유니티 게임 개발 5기 : 멋사 부트캠프&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;개발부터 출시까지! 나만의 게임을 세상에 선보이는 유니티 부트캠프&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;bootcamp.likelion.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;u&gt;&lt;b&gt;캐릭터 이동 3가지&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;(1) &lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;Transform 이동&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;위치 값을 직접 수정하므로 반응이 빠르지만, 물리 계산이 무시된다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Rigidbody가 있을 경우, 충돌 처리 이상이 발생할 수 있다(예 : 관통, 튕김 무시)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;[주용도] &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;UI, 배경, 단순 애니메이션 등 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;물리 반응이 필요 없는 경우&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;(2) &lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;Rigidbody 이동&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;물리 법칙(중력, 마찰, 질량 등)에 따라 자연스럽게 동작&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;[velocity]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;속도를 직접 제어하는 가장 빠르고 직접적인 물리 이동 방식&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;[AddForce]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;힘을 가해 가속도를 만드는 방식으로 더 자연스러운 반응 가능&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;(3) &lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;Character Controller 이동&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;충돌 처리는 자동으로 되지만, 물리 엔진(Rigidbody 등)과는 별도&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;스텝 기능, 경사면 이동 등 캐릭터 전용 기능 포함&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;중력은 직업 구현해야 하며, controller&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;.Move()에 직접 중력 반영 필요&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;* &lt;/span&gt;&lt;u&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;Invoke, Coroutine&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;Invoke&lt;/span&gt;는 일정 시간 후 또는 일정 주기로 함수를 호출하는 간단한 방식이며,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;Coroutine&lt;/span&gt;은 시간을 기다리거나 여러 프레임에 걸쳐 실행 흐름을 제어할 수 있는 논리적 비동기 함수이다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>게임프로그래밍/Unity_C#</category>
      <category>멋쟁이사자처럼 유니티 게임 개발 5기</category>
      <category>씨샵</category>
      <category>유니티</category>
      <author>shine94</author>
      <guid isPermaLink="true">https://shine94.tistory.com/460</guid>
      <comments>https://shine94.tistory.com/460#entry460comment</comments>
      <pubDate>Fri, 27 Jun 2025 18:05:31 +0900</pubDate>
    </item>
  </channel>
</rss>