Targeting ๊ตฌํ˜„์„ ์œ„ํ•ด FreeLookCamera๋ž‘ TargetingCamera๋ฅผ StateDrivenCamera์•ˆ์— ๋„ฃ์–ด์„œ ์“ฐ๊ณ ์žˆ๋Š”๋ฐ


Targeting์—์„œ ๋‹ค์‹œ FreeLook์œผ๋กœ ๋Œ์•„์˜ฌ๋•Œ ์นด๋ฉ”๋ผ ๊ฐ๋„๊ฐ€ ์ด์ƒํ•˜๊ฒŒ ๋ณ€ํ•จ


์‚ฌ์‹ค ์ด์ƒํ•˜๊ฒŒ ๋ณ€ํ•œ๊ฑด ์•„๋‹ˆ๊ณ  ๋‹น์—ฐํ•œ๊ฑด๋ฐ FreeLook ์นด๋ฉ”๋ผ ํšŒ์ „ X์ถ•์€ ๊ณ ์ •๋˜์žˆ๋Š” ์ƒํƒœ์—์„œ Targeting ์ƒํƒœ์—์„œ ์บ๋ฆญํ„ฐ ํšŒ์ „์‹œย 


์บ๋ฆญํ„ฐ๋งŒ ํšŒ์ „๋˜์žˆ๋Š” ์ƒํƒœ์ด๊ธฐ๋•Œ๋ฌธ์—


FreeLook์œผ๋กœ ๋Œ์•„์˜ฌ๋•Œ ์บ๋ฆญํ„ฐ๊ฐ€ ์ •๋ฉด์„ ๋ณด๊ณ ์žˆ์ง€ ์•Š์€์ƒํƒœ์ž„


๊ทผ๋ฐ ๋ณดํ†ต FreeLook์—์„œ Targeting์œผ๋กœ ๋“ค์–ด๊ฐˆ๋•Œ ๋ณดํ†ต์€ FreeLook์—์„œ๋„ ์ •๋ฉด์„ ์œ ์ง€ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ๋กœ ๋“ค์–ด๊ฐ€๊ณ  ๋‚˜์˜ฌ๋•Œ๋„ ์บ๋ฆญํ„ฐ ์ •๋ฉด๋ฐฉํ–ฅ์œผ๋กœ


์นด๋ฉ”๋ผ๊ฐ€ ํšŒ์ „๋˜์žˆ๋Š”๊ฒŒ ์ž์—ฐ์Šค๋Ÿฌ์šธ๊ฑฐ๊ฐ™์•„์„œ


์ด๊ฑธ ์ˆ˜์ •์‹œ์ผœ๋ณด๊ณ  ์‹ถ์—ˆ์Œ Targeting์—์„œ ์บ๋ฆญํ„ฐ๊ฐ€ ํšŒ์ „์„ ํ•œ ์ƒํƒœ์—์„œ๋„ FreeLook์œผ๋กœ ๋Œ์•„์˜ฌ๋•Œ ์บ๋ฆญํ„ฐ ํšŒ์ „ํ•œ ์ƒํƒœ์— ๋งž๊ฒŒ๋” FreeLookย 


์นด๋ฉ”๋ผ๊ฐ€ ์ •๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก


DiffRotation = (currCharacterYRotation - InitCharacterYRotation);
stateMachine.FreeLookCamera.m_XAxis.Value += DiffRotation;


๋Œ€์ถฉ ์ด๋ ‡๊ฒŒ ์งฐ๋Š”๋ฐ ์ €๊ธฐ์„œ ๋ฌผ๋ก  ํšŒ์ „๊ฐ’์€ y์ถ• ์˜ค์ผ๋Ÿฌ๊ฐ์ž„ ใ…‡ใ…‡

๊ทผ๋ฐ ์ €๊ธฐ์„œ ์บ๋ฆญํ„ฐ ํ˜„์žฌ ํšŒ์ „๊ฐ’์ด๋ž‘ ๋‚˜์ค‘ ํšŒ์ „๊ฐ’ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ๋Š”๊ฒฝ์šฐ ์ด์ƒํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋”๋ผ


DiffRotation = (InitCharacterYRotation - currCharacterYRotation );


์ด๋Ÿฐ์‹์œผ๋กœ ใ…‡ใ…‡ ์ •ํ™•ํžˆ๋Š” ์™ผ์ชฝ์œผ๋กœ ํšŒ์ „ํ• ๋–ˆ๊ฐ€? 180๋„๋„ ์•„๋‹ˆ๊ณ  90๋„ ์ •๋„ ํšŒ์ „ํ–ˆ์„๋•Œ ์นด๋ฉ”๋ผ ํšŒ์ „์ด ์บ๋ฆญํ„ฐ ์ •๋ฉด์„ ์•ˆ๋ฐ”๋ผ๋ด„

๋งจ ์ฒ˜์Œ์— ์“ด ์ฝ”๋“œ๋Š” ์™ผ์ชฝ์˜ค๋ฅธ์ชฝ๋‹ค ์–ด๋А๊ฐ๋„๋กœ ์ด๋™ํ•ด๋„ ๋‹ค์‹œ ๋Œ์•„์˜ฌ๋•Œ ์นด๋ฉ”๋ผ๊ฐ€ ์ •๋ฉด์„ ๋ฐ”๋ผ๋ณด๊ณ ์žˆ์Œ


์ƒ๊ฐํ•ด๋ณด๋‹ˆ ๋ฐฉํ–ฅ๋ฒกํ„ฐ๋งˆ๋ƒฅ ํšŒ์ „๋„ A-B๋ž‘ B-A๋ž‘ ๋‹ฌ๋ผ์ง€๊ฒ ๋”๋ผ ์ด๊ฑธ ๊ฐ„๊ณผํ•˜๊ณ  ์งœ์„œ ํšŒ์ „๊ฐ’์ด ์ด์ƒํ•˜๊ฒŒ ๋ณ€ํ•œ๊ฑฐ์˜€๋„ค ใ…‡ใ…‡ย 


๋‚ด๊ฐ€์ƒ๊ฐํ•œ๊ฑฐ ๋งž๊ฒ ์ง€?