์›๋ณธ์€ ์•„๋งˆ ์—ฌ๊ธฐ ์œ ๋™์ด ๋‹ฌ์•„์คฌ๋Š”๋ฐ ์‚ญ์ œ๋˜์„œ ์‹ฌ์‹ฌํ•ด์„œ ๋ฒˆ์—ญํ•ด๋ด„


์ค‘๋ ฅ

ํ”Œ๋žซํฌ๋จธ ๊ฒŒ์ž„์˜ ์›€์ง์ž„์€ ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ์ •์‹์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์˜ค๋ธŒ์ ํŠธ์— ๋งค ํ”„๋ ˆ์ž„๋งˆ๋‹ค ํ†ตํ•ฉ๋œ ์œ„์น˜์™€ ์†๋„๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค.

velocity = velocity + gravity*dt position = position + velocity*dt


์†๋„ = ์†๋„ + ์ค‘๋ ฅ*dt

์œ„์น˜ = ์œ„์น˜ + ์†๋„*dt


์ด ๋ฐฉ์ •์‹์€ ์ง„๊ณต ์ƒํƒœ์—์„œ๋Š” ๊ฝค ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ง„๊ณต ์ƒํƒœ์—์„œ๋Š” ์ค‘๋ ฅ์ด ๋‚™ํ•˜ํ•˜๋Š” ๋ฌผ์ฒด๋ฅผ ์˜์›ํžˆ ๊ฐ€์†ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,

๋ฒ„์„ฏ์ด ๋น›์˜ ์†๋„๋กœ ๋–จ์–ด์ง€๋Š” ๊ฒƒ์€ ์ ˆ๋Œ€ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ํ•œ ๊ฐ€์ง€ ํ•ด๊ฒฐ์ฑ…์€ ์›€์ง์ด๋Š” ๋ฌผ์ฒด์˜ ์†๋„๋ฅผ ์ ์ ˆํ•œ ์ž„๊ณ„๊ฐ’์œผ๋กœ ๊ณ ์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


local v = math.sqrt(velocity.x^2 + velocity.y^2)
๋งŒ์•ฝ v > maxVelocity ์ผ๋•Œ,(V>์ตœ๋Œ€์†๋„)

local vs = maxVelocity/v velocity.x = velocity.x*vs velocity.y = velocity.y*vs end

๊ฐ์‡ (Damping)


๋Œํ•‘์„ '๋งˆ์ฐฐ'์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•˜๋Š”๋ฐ, ์‚ฌ์‹ค ๊ณต๊ธฐ ์ €ํ•ญ๊ณผ ๋” ๋น„์Šทํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ƒํ•˜๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ค๋ฒ„ํ—ค๋“œ ๊ฒŒ์ž„์—์„œ๋Š” ๋งˆ์ฐฐ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ์ œ ์ƒ๊ฐ์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๋Œํ•‘์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ์ •์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:
(์—ญ์ฃผ: ์˜ค๋ฒ„ํ—ค๋“œ ๊ฒŒ์ž„์€ ์ฃผ๋กœ ์‹œ์ ์„ ๋งํ•˜๋Š” ๊ฒƒ. ํƒ‘ ๋‹ค์šด ๊ฒŒ์ž„์ด๋‚˜, ์•„์ด์†Œ๋งคํŠธ๋ฆญ ํ˜•์‹์˜ ๊ฒŒ์ž„์ด ์—ฌ๊ธฐ์— ์†ํ•จ)

velocity = velocity / (1 + damping*dt)
์—ฌ๊ธฐ์„œ '๊ฐ์‡ ' ๊ณ„์ˆ˜๋Š” 0์—์„œ ๋ฌดํ•œ๋Œ€ ์‚ฌ์ด์˜ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ด ๊ณ„์ˆ˜๊ฐ€ ํด์ˆ˜๋ก ๋ฌผ์ฒด์˜ ์†๋„๊ฐ€ ๋А๋ ค์ง‘๋‹ˆ๋‹ค.
์ข€ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค๋ช…ํ•˜์ž๋ฉด 0์—์„œ 1 ์‚ฌ์ด์˜ ๊ฐ’์€ "๋ถ€์กฑ ๊ฐ์‡ ", 1์€ "๊ณผ๊ฐ์‡ ", 1๋ณด๋‹ค ํฐ ๊ฐ’์€ "์ž„๊ณ„ ๊ฐ์‡ "๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.
(์—ญ์ฃผ: ๊ฐ์‡ ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง„๋™์šด๋™ ํ•ด์„ํ• ๋•Œ ๋งŽ์ด ๋ฐฐ์šฐ๋Š”๋ฐ, ๊ทธ๋ฆฌํ”ผ์Šค ์ „์ž๊ธฐํ•™์ฑ…์—์„œ ๋‚˜์™”๋˜ ๋ฒˆ์—ญ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•จ)

์ ํ•‘(Jumping)


์ข‹์€ ์ ํ”„ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์š”์ธ์œผ๋กœ ์ธํ•ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ ํ”„ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ํ›„์—, ์ ํ”„ ๋†’์ด๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ๋ฌผ๋ฆฌ ๋ฒ•์น™์— ์–ด๊ธ‹๋‚˜์ง€๋งŒ ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด๋ฅผ ๋”์šฑ ์ •๊ตํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ํ”Œ๋žซํฌ๋จธ ์ ํ”„๋ฅผ "์ œ๋Œ€๋กœ" ๋ณด์ด๊ฒŒ ํ•˜๊ณ  ๋А๋ผ๊ฒŒ ํ•˜๋Š” ํŠธ๋ฆญ์„ ์‚ดํŽด๋ด…์‹œ๋‹ค.
๋ช‡ ๊ฐ€์ง€ ๊ฐ€์ •๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ์งธ, ํ”Œ๋ ˆ์ด์–ด๋Š” ๋ฒ„ํŠผ ํ•˜๋‚˜๋กœ ์ ํ”„๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋ฒ„ํŠผ์„ ์˜ค๋ž˜ ๋ˆ„๋ฅด๊ณ  ์žˆ์„์ˆ˜๋ก ๋” ๋†’์ด ์ ํ”„ํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฒ„ํŠผ์„ ์„ธ๊ฒŒ ๋ˆ„๋ฅด๋ฉด ์บ๋ฆญํ„ฐ๊ฐ€ ๋” ๋†’์ด ์ ํ”„ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ฐฉ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ธฐ์‰ฌ์šด ์ ‘๊ทผ ๋ฐฉ์‹์€ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ ํ”„ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  ์žˆ๋Š” ๋™์•ˆ ๊ณ„์†ํ•ด์„œ ์œ„์ชฝ์œผ๋กœ ํž˜์„ ๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ˆํƒ€๊น๊ฒŒ๋„ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ ํ”„๊ฐ€ '๋ถ• ๋œจ๋Š”' ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๋ฉฐ ์บ๋ฆญํ„ฐ๊ฐ€ ์ œํŠธํŒฉ์„ ์ฐฉ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•œ๋‹ค๊ณ  ๋А๋ผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.



3eac8168f5dc3f8650bbd58b3680716f9d253bac8268f5dc3f8650bbd58b3683756a7a83


์™ผ์ชฝ: ๋‹ค์–‘ํ•œ ์‹œ๊ฐ„ ๋™์•ˆ ์ถ”๋ ฅ์ด ์ ์šฉ๋œ ์ œํŠธํŒฉ
์˜ค๋ฅธ์ชฝ: ์ดˆ๊ธฐ ์†๋„๊ฐ€ ๊ฐ€๋ณ€์ ์ธ ์ ํ”„


๋งŒ์•ฝ ์ ํ”„ํ‚ค๋ฅผ ๋ˆŒ๋ €๋‹ค๋ฉด


player.yv = initJumpVelocity

player.yy=์ดˆ๊ธฐ ์ ํ”„์†๋„ end

์ ํ”„์˜ ๋ฌผ๋ฆฌํ•™์€ ๋ฐœ์‚ฌ์ฒด๋ฅผ ๋ฐœ์‚ฌํ•  ๋•Œ์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ์บ๋ฆญํ„ฐ์˜ ์ดˆ๊ธฐ ์†๋„๋ฅผ ์„ค์ •ํ•˜๊ณ  ์ค‘๋ ฅ์— ๋”ฐ๋ผ ์›€์ง์ด๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค(๊ณต๊ธฐ ์ €ํ•ญ์˜ ์˜ํ–ฅ์€ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค). ๋‘ ๋ฒˆ์งธ ๊ฐ€์ •์€ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ ํ”„ ๋ฒ„ํŠผ์„ ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ๋ˆ„๋ฅด๊ณ  ์žˆ๋“  ํ•ญ์ƒ ๋™์ผํ•œ ์ˆ˜์ง ์†๋„๋กœ ์ ํ”„ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์บ๋ฆญํ„ฐ์˜ ์ตœ๋Œ€ ์ ํ”„ ๋†’์ด๋ฅผ ์•Œ๋ฉด ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ์ƒ์ˆ˜๋ฅผ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
-- ์ฃผ์–ด์ง„ ๋†’์ด๋กœ ์ ํ”„ํ•  ์ˆ˜ ์žˆ๋Š” ์ค‘๋ ฅ์€ ์–ผ๋งˆ์ธ๊ฐ€?
g = (2*jumpHeight)/(timeToApex^2)
g = (2*์ ํ”„๋†’์ด)/(์ •์ ๊นŒ์ง€์˜ ์‹œ๊ฐ„^2)
-- ์ ํ”„๊ฐ€ ์ตœ๋Œ€ ๋†’์ด์— ๋„๋‹ฌํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์€ ์–ผ๋งˆ๋‚˜ ๋˜๋‚˜์š”?
-- ์ฐธ๊ณ : "initJumpVelocity"๊ฐ€ "g"์˜ ๋ฐฐ์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ, ํ”„๋ ˆ์ž„ ์‚ฌ์ด์— ์ตœ๋Œ€ ๋†’์ด์— ๋„๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
timeToApex = initJumpVelocity/g
์ •์  ๋„๋‹ฌ์— ๊ฑธ๋ฆฐ ์‹œ๊ฐ„=์ดˆ๊ธฐ ์ ํ”„ ์†๋„/์ค‘๋ ฅ ๊ฐ€์†๋„

์œ„์˜ ์„ธ ๊ฐ€์ง€ ๋ฐฉ์ •์‹ ๋•๋ถ„์— ๋” ์ด์ƒ ๊ฒŒ์ž„์—์„œ ์ค‘๋ ฅ์„ ๋งˆ๋ฒ• ๊ฐ™์€ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์บ๋ฆญํ„ฐ์˜ ์ ํ”„ ์†๋„๋ฅผ ์ง์ ‘ ์กฐ์ •ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•  ํ•„์š”๋„ ์—†์Šต๋‹ˆ๋‹ค!

๊ณ„์‚ฐ


์ƒ์ˆ˜(ํฐ์ƒ‰)๋ฅผ ๋‘ ๊ฐœ ์ด์ƒ ์ž…๋ ฅํ•˜๋ฉด ๊ณ„์‚ฐ๊ธฐ๊ฐ€ ๋นˆ์นธ(ํšŒ์ƒ‰)์„ ์ฑ„์›๋‹ˆ๋‹ค. ๊ณต๊ธฐ ์ €ํ•ญ์€ ๊ณ ๋ ค๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


* ๋ณดํ†ต ์‚ฌ๋žŒ์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ ์ž๊ทน์— ๋น„ํ•ด ์ฒญ๊ฐ ์ž๊ทน์— ๋Œ€ํ•œ ๋ฐ˜์‘์ด ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์Œํ–ฅ ํšจ๊ณผ๋Š” ํ”Œ๋žซํฌ๋จธ ๊ฒŒ์ž„์„ "์ œ๋Œ€๋กœ ๋œ ๋А๋‚Œ"์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

์Œํ–ฅ ํšจ๊ณผ๋ฅผ ์ฒดํฌํ•œ ํ›„, ๊ฐ ํŒŒ์ผ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์žˆ๋Š” ์ž‘์€ ์นจ๋ฌต์„ ์ œ๊ฑฐํ•˜์„ธ์š”!(์—ญ์ฃผ: ์ ํ”„ ๋›ฐ๊ธฐ์ „์— ์Œํ–ฅ ํšจ๊ณผ ๋‹ฌ์•„๋ผ๋Š” ๋ง)
ํฅ๋ฏธ๋กญ๊ฒŒ๋„ ์‚ฌ๋žŒ์€ ํ„ฐ์น˜์— ๋” ๋น ๋ฅด๊ฒŒ ๋ฐ˜์‘ํ•ฉ๋‹ˆ๋‹ค.
๊ฒŒ์ž„์—์„œ Force Feedback(ํฌ์Šค ํ”ผ๋“œ๋ฐฑ)์ด๋‚˜ ์ง„๋™(Vibration)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์•ˆ๋“œ๋กœ์ด๋“œ๋Š” ํ™”๋ฉด ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ํ–…ํ‹ฑ ํ”ผ๋“œ๋ฐฑ์„ ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ  ๊ณ„์…จ๋‚˜์š”?
https://2dengine.com/doc/platformers.html๊ณ„์‚ฐ๊ธฐ๋Š” ๋งํฌ ํƒ€๊ณ  ๊ฐ€์…ˆ

viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ce985fa11d028315015801132de093a7d99d0d3d9daab67a50ef76ab05219c5a27e99b4d55b8e942d85418208ee5244da6d6f449e04b10cb4eeb5