์ง„๋‹จ


๋„๋Œ€์ฒด ๋ฌด์—‡ ๋•Œ๋ฌธ์— PC๊ฐ€ ํ•˜๋Š˜๋กœ ์Šน์ฒœํ•˜๋Š” ๊ฑธ๊นŒ์š”?

์กฐ๊ธˆ๋งŒ ์ƒ๊ฐํ•ด ๋ณด๋‹ˆ ๊ธˆ๋ฐฉ ๋ฌธ์ œ์˜ ์›์ธ์„ ์•Œ์•„์ฐจ๋ฆด ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.


๋ฌธ์ œ์˜ ์›์ธ์€ ์„ค๊ณ„์˜ Set PC โ€œgravityScaleโ€ = 0 ๋ถ€๋ถ„์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.



์„ค๊ณ„ ๋‹น์‹œ ์ œ ์ƒ๊ฐ์€ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

์ค‘๋ ฅ ๋•Œ๋ฌธ์— ์•„๋ž˜๋กœ ๋–จ์–ด์ง€๋‹ˆ, ์ค‘๋ ฅ์„ ์—†์• ๋ฉด ์•„๋ž˜๋กœ ๋–จ์–ด์ง€์ง€ ์•Š๊ฒ ์ง€โ€ฆ

ํ•˜์ง€๋งŒ



์ ํ”„ ์ค‘์ธ PC์—๊ฒŒ ์ ์šฉ๋˜๋Š” Force๋Š” ์ค‘๋ ฅ๋งŒ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

โ€œ์ ํ”„โ€๋ฅผ ํ–ˆ์œผ๋‹ˆ๊นŒ โ€œ์ ํ”„โ€๋ฅผ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ์ƒ์Šนํ•˜๋Š” Velocity๊ฐ€ PC์—๊ฒŒ ์ ์šฉ ์ค‘์ด์—ˆ๋˜ ๊ฒ๋‹ˆ๋‹ค.

๊ทธ ์ƒํƒœ์—์„œ Gravity๋ฅผ ์ œ๊ฑฐํ–ˆ์œผ๋‹ˆโ€ฆ

PC๋Š” ํ•˜๊ฐ•ํ•˜์ง€ ์•Š๊ณ  ๋ฌดํ•œํžˆ ์ƒ์Šนํ•˜๋Š” ์ƒํƒœ๊ฐ€ ๋˜๋Š” ๊ฒ๋‹ˆ๋‹ค.


์žฌ์„ค๊ณ„


๊ฐ„๋‹จํ•˜๊ฒŒ Velocity๋ฅผ 0์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๋ฌธ์ œ ํ•ด๊ฒฐ์ด๊ฒ ๋„ค์š”.


์ˆ˜์ •


void Update() { if(_ledge.inLedge && !_ground.OnGround) { if (_controller.input.RetrieveJumpInput()) { _ledge.isHanging = true; _body.gravityScale = 0f; _body.velocity = Vector3.zero; Debug.Log("it's working"); } } }

ํ•œ ์ค„์˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ˆ˜์ •์€ ๋์ž…๋‹ˆ๋‹ค.



์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋„ค์š”.

(์˜†์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฑด ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆ„๋ฅด๊ณ  ์žˆ์–ด์„œ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.)


๊ณ ๋ฏผ


์‚ฌ์‹ค ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ˆ˜์ • ์ค‘์— ๋” ํฐ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ๋ง์•˜์ฃ .


์šฐ์„  ์ฝ”๋“œ๊ฐ€ (์ฝ”๋ฆฐ์ด์ธ ์ œ ๊ธฐ์ค€) ์ข€ ๋ณต์žกํ•˜๋‹ค๋Š” ๊ฒ๋‹ˆ๋‹ค.




ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์Šคํฌ๋ฆฝํŠธ๋“ค์„ ์—ฐ๊ฒฐํ•ด ๋ฒ„๋ฆฌ๋‹ˆ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.



๊ทธ๋ž˜์„œ ์ด๋Ÿฐ ์‹์œผ๋กœ ์ค‘๊ฐ„์—์„œ ์ค‘๊ณ„ํ•ด์ฃผ๋Š” Player.cs๋ฅผ ๋งŒ๋“ค๋ฉด ์–ด๋–จ๊นŒ ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.๊ทธ๋Ÿฌ๋ฉด ๋‚˜์ค‘์— ์ƒˆ๋กœ์šด ๋™์ž‘์„ ๋” ์ถ”๊ฐ€ํ•˜๋”๋ผ๋„ ํ˜ผ๋ž€์ด ๋œํ•˜์ง€ ์•Š์„๊นŒ์š”?


๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” ๊นƒํ—ˆ๋ธŒ์—์„œ ๊ธ์–ด์˜จ 2D ํ”Œ๋žซํฌ๋จธ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€, ์ œ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ์กฐ์ž‘๊ณผ๋Š” ๋‹ค๋ฅด๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

๊ฐ€๋ น,



ํ•ด๋‹น ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ด๋ ‡๊ฒŒ ๊ณต์ค‘์—์„œ ๋ฐฉํ–ฅ์„ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ๋ฐ, ์ œ๊ฐ€ ํ•„์š”๋กœํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๊ณต์ค‘์—์„œ ๋ฐฉํ–ฅ ์ „ํ™˜์ด ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

PC๊ฐ€ ๊ณต์ค‘์—์„œ ๋ฐฉํ–ฅ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์œผ๋ ค๋ฉดโ€ฆ


1.PC๊ฐ€ ์ ํ”„ ์ค‘์ธ์ง€ ์ฒดํฌํ•œ๋‹ค.

2.์ ํ”„ ์ค‘์ผ ๊ฒฝ์šฐ Move.cs ์Šคํฌ๋ฆฝํŠธ์˜ ๋™์ž‘์„ ์ค‘๋‹จํ•œ๋‹ค.

3.์ฐฉ์ง€ ํ–ˆ์„ ๋•Œ Move.cs ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์‹œ ์ž‘๋™ํ•œ๋‹ค.

๊ฐ™์€ ๋™์ž‘์ด ํ•„์š”ํ•  ๊ฒ๋‹ˆ๋‹ค.


์ด ๋•Œ โ€œPC๊ฐ€ ์ ํ”„ ์ค‘์ธ์ง€โ€๋ฅผ PC์˜ ์ƒํƒœ, โ€œStateโ€์ด๋ผ ์ •์˜ํ•œ๋‹ค๋ฉด,

PC์˜ State์„ ๊ด€๋ฆฌ๊ณ , ๊ทธ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ์˜ ๋™์ž‘์„ ํ†ต์ œํ•  ์ˆ˜ ์žˆ๋Š” StateManager๊ฐ€ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฑฐ๋ž€ ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.


๊ทธ๋ฆฌ๊ณ  Player.cs๊ฐ€ ๊ทธ ์—ญํ• ์„ ๋งก๊ธฐ์— ์ ๊ฒฉ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

์ •๋ฆฌํ•˜์ž๋ฉด Player.cs ๋Š”

1.์Šคํฌ๋ฆฝํŠธ ์‚ฌ์ด๋ฅผ ์ค‘๊ณ„ํ•ด์ค€๋‹ค.

2.PC์˜ State์„ ๊ด€๋ฆฌํ•˜๊ณ  ์Šคํฌ๋ฆฝํŠธ๋“ค์„ ํ†ต์ œํ•œ๋‹ค.



๋‹ค์Œ ํŽธ์— ๊ณ„์†โ€ฆ