32

๋Œ์•„์˜จ ์‹ญ๋•์†Œ์šธย ๊ฐœ๋ฐœ์ผ์ง€


์ตœ๊ทผ์— ์นด๋ฉ”๋ผ ์‹œ์  ๊ด€๋ จย ๋ถˆํŽธํ•˜๋‹ค๋Š” ํ”ผ๋“œ๋ฐฑ์ด ๋งŽ์•„์„œ

๋ฝ์˜จ ์‹œ์Šคํ…œ์„ ๋„์ž…ํ•ด๋ดค์–ด



2faeef2aead133a960ee9bfb01d4262d2e8a774e9fd49514ad0680380bfc


๋ฝ์˜จ์„ ๋„ฃ์œผ๋‹ˆ๊นŒ ํ™•์‹คํžˆ ํ”Œ๋ ˆ์ดํ•˜๊ธฐ ํ›จ์”ฌ ์พŒ์ ํ•˜๊ณ 

๋ณด์Šค์ „์—์„œ๋„ ์•ˆ์ •์ ์œผ๋กœ ๋ฉ‹์ง„ ๊ตฌ๋„๋ฅผ ์œ ์ง€ํ•ด์ค˜์„œ

์ง„์ž‘์— ๋„ฃ์—ˆ์–ด์•ผ ํ–ˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค๋”๋ผ๊ณ .. ํฌ

ย 




ํ˜น์‹œ ๊ถ๊ธˆํ•œ ์ธ๋ถ•์ด๋ฅผ ์œ„ํ•ด ๋งŒ๋“  ๊ณผ์ •์„ ์กฐ๊ธˆ ๊ณต์œ ํ•ด๋ณด์ž๋ฉด



7c82f629e3d721a578aed7e23afc7c38a20ee8ae1b6cba1443347f0befaf53dbae26544fa4f484


7c82ff27f6d331f65c89f19432e8071a0f86c463c6eb86671c95d49acbe961778e8c605040ecba


2eb4de23e8d33bae67b1d38a11c32b28e4665e4563af3f5417f5a8cfa2ff993c0e00aa77d065cb1bc70eb2


์œ ๋‹ˆํ‹ฐ์˜ Cinemachine์—์„œ ์ œ๊ณตํ•˜๋Š” CinemachineTargetGroup ์ปดํฌ๋„ŒํŠธ์™€

๋ฒ„์ถ”์–ผ์บ  Aim์—์„œย Group Composer๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด

์œ„์ฒ˜๋Ÿผ ํ”Œ๋ ˆ์ด์–ด์™€ ํƒ€๊ฒŸ์ด ์นด๋ฉ”๋ผ ๋ฐ–์œผ๋กœ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ฒŒย ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์žก์•„์คŒ

์ด๊ฒŒ ์ƒ๊ฐ๋ณด๋‹ค ์ค‘์š”ํ•œ ์š”์†Œ๋”๋ผ๊ณ .


๋‚˜๋Š” ์—ฌ๊ธฐ์— ์นด๋ฉ”๋ผ๋ฅผ ๋ฝ์˜จํ•œ ํƒ€๊ฒŸ์ชฝ์œผ๋กœ ํšŒ์ „์‹œ์ผœ ๋ฐ”๋ผ๋ณด๊ฒŒ ํ•˜๋‹ˆย ์›ํ–ˆ๋˜ ๋ฝ์˜จ์˜ ๋А๋‚Œ์„ ๋‚ผ ์ˆ˜ ์žˆ์—ˆ์–ด,

(์ด๊ฑด VCam์˜ย Follow ํƒ€๊ฒŸ์—ย ย Look At Constraint๋ฅผ ์ ์šฉํ•ด๋„ ๋˜์ง€๋งŒ,

๋А๋‚Œ์ด ๋”ฑ๋”ฑํ•˜๊ณ  ํƒ€์ดํŠธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋“œ๋Ÿฝ๊ฒŒย ํ•˜๋ ค๋ฉด ๋ฐ”๋ผ๋ณด๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜๊ธด ํ•ด์•ผํ• ๊ฑฐ์•ผ)



์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ณ„๋กœ ์ฝ”๋”ฉํ•  ๊ฒƒ๋„ ์—†์ดย ๊ดœ์ฐฎ์€ ๋А๋‚Œ์˜ย ๋ฝ์˜จ์ด ๊ตฌํ˜„!



ํ•˜์ง€๋งŒ ์•„์ง ๋ช‡๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ


- ์นด๋ฉ”๋ผ์˜ ์ฝœ๋ผ์ด๋”๊ฐ€ย ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ -> ๊ฒฐ๊ตญ์€ย ๊บผ์•ผ ํ–ˆ์Œ

- ์›์ธ์€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒย ํŠน์ •์ƒํ™ฉ์—์„œย ์นด๋ฉ”๋ผ๊ฐ€ ๋“œ๋“œ๋“ ๊ฑฐ๋ฆฌ๋Š” ๋ฌธ์ œ


์ด๋Ÿฐ ๋ฌธ์ œ๋“ค๋„ ์žˆ์–ด์„œ, ์กฐ๊ธˆ ๋ณด์™„/์—ฐ๊ตฌ๋Š” ํ•„์š”ํ• ๊ฑฐ ๊ฐ™๋‹ค.

(ํ˜น์‹œ ํ•ด๊ฒฐ๋ฒ• ์•„์‹œ๋Š”๋ถ„ ์žˆ๋‹ค๋ฉด ์กฐ์–ธ์ข€ ใ…‹)





์ถ”๊ฐ€๋กœ ๋ฝ์˜จ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ๋ˆ„๊ตด ํƒ€๊ฒŸ์œผ๋กœ ํ• ์ง€ย ๊ณจ๋ผ๋‚ด๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š”

์นด๋ฉ”๋ผ๊ฐ€ ๋ฐ”๋ผ๋ณด๋Š” ๋ฐฉํ–ฅ์œผ๋กœ SphereCast ํ•œ๋‹ค๋Š” ์ด์•ผ๊ธฐ๋„ ๋“ค์—ˆ๋Š”๋ฐ

๋‚˜๋Š” ๊ทธ๋ƒฅ ์นด๋ฉ”๋ผ Ray(์„ ๋ถ„)์—์„œ ํŠน์ • ์ ๊นŒ์ง€์˜ย ๊ฑฐ๋ฆฌ๋ฅผ ์žฌ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๋ดค์–ด.


1690d132edef1eaf60bb96a513c33438cb33ca7be005aee845f12b74599328dfb0f997c197ff4e1a6c7e8859027f7e2138c014cfaacfdc6f4671e0530026cd0216bfc6941f1b8b1020f330cd4a66




2eedd17fb0d460f239e7d0b71585726e695876f9ceb27b98e5068d94dfcc218f44207ca7467d7f341273445538a437c11044676a09162634550c76a3a0e3b9c6c8f2541a012d310d4a25ac9f2a5a9a03f2f23876d11ce6ccfaa33dadc141de8a3c30482ba28636aecfecfe58ff28dc949002e6155e7e878996414d43010c839d3929ace78cfc5956610e3dce17b4426edc164e557c05531fa186feb22ec1449a4777a367310f02a44d1eb54b7b4dfb5d3f03dae394f6a504004995f65bb47a252021fc22ddde092089c6c7c4b69f


...

์œ„์— ๊ทธ๋ฆผ๋งŒ์œผ๋กœ๋Š” ์‚ฌ์‹ค ๋‚˜๋„ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์› ๊ธฐย ๋•Œ๋ฌธ์—

๊ทธ๋ƒฅ ์ฝ”๋“œ๋กœ ๊ธ์–ด์˜ด.


//UnityEditor.HandleUtility์—์„œ ๊ธ์–ด์˜จ ์ฝ”๋“œ


ย  ย  public static float DistancePointLine(Vector3 point, Vector3 lineStart, Vector3 lineEnd)

ย  ย  {

ย  ย  ย  ย  return Vector3.Magnitude(ProjectPointLine(point, lineStart, lineEnd) - point);

ย  ย  }


ย  ย  public static Vector3 ProjectPointLine(Vector3 point, Vector3 lineStart, Vector3 lineEnd)

ย  ย  {

ย  ย  ย  ย  Vector3 rhs = point - lineStart;

ย  ย  ย  ย  Vector3 vector = lineEnd - lineStart;

ย  ย  ย  ย  float magnitude = vector.magnitude;

ย  ย  ย  ย  Vector3 vector2 = vector;

ย  ย  ย  ย  if (magnitude > 1E-06f)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  vector2 /= magnitude;

ย  ย  ย  ย  }


ย  ย  ย  ย  float value = Vector3.Dot(vector2, rhs);

ย  ย  ย  ย  value = Mathf.Clamp(value, 0f, magnitude);

ย  ย  ย  ย  return lineStart + vector2 * value;

ย  ย  }




2fe58571e38361f36fbcd3ec4281216b1a12530ed0d68c8ba5702c46dc881aa713fef08c4fd7455f8d2aec4207870f


์ด์ œ ๋Œ€๋žต ํ•ต์‹ฌ ์žฌ๋ฃŒ๋Š” ๊ฐ–์ถฐ์กŒ๊ธฐ ๋•Œ๋ฌธ์—

๋‚˜๋จธ์ง€ ๊ตฌํ˜„์€ ์—ฌ๋Ÿฌ๋ถ„์˜ ๋ชซ์œผ๋กœ ๋‚จ๊ธฐ๊ณ  ๋‚˜๋Š” ๋Ÿฐํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.

๊ทธ๋Ÿผ ๋ชจ๋‘ ์ฆ๊ฑฐ์šด ๊ฐœ๋ฐœ~