๋‚ด๊ฐ€ ์–ด๋””์„œ ์ž˜๋ชปํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ข€ ๋ด์ค˜


์…€๋ ˆ์ŠคํŠธ์ฒ˜๋Ÿผ ์ตœ๋Œ€๋†’์ด์—์„œ ์ผ์ •์‹œ๊ฐ„๋™์•ˆ์€ ์ฒœ์ฒœํžˆ ๋–จ์–ด์ง€๊ฒŒ ํ•˜๋Š”๊ฑธ ๋งŒ๋“ค๊ณ  ์žˆ์Œ

๊ทธ๋Ÿฐ๋ฐ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ด ์ ํ”„ ์‹œ๊ฐ„๊ณผ ๋†’์ด๋ฅผ ์ •ํ•ด์ฃผ๊ณ  ์‹ถ๋‹ค ์ด๊ฑฐ์•ผ.

์ ํ”„๊ฑฐ๋ฆฌ๋Š” ์ ํ”„์‹œ๊ฐ„์— ๋”ธ๋ ค์˜ค๋Š”๊ฑฐ๋‹ˆ๊นŒ ์—ฌ๊ธฐ์„  ๋…ผ์™ธ๋กœ ํ•จใ…‡ใ…‡



[Tooltip("์ตœ๋Œ€ ์ ํ”„ ๋†’์ด")]
public float JumpHeight = 6f;
[Tooltip("์ ํ”„ ์ƒ์Šน์‹œ๊ฐ„")]
public float JumpTime = 0.3f;
[Tooltip("์ ํ”„ ์ตœ๊ณ ๋†’์ด ์œ ์ง€ ์‹œ๊ฐ„")]
public float JumpPeakTime = 0.15f;
[Tooltip("Peak๋กœ ํŒ์ •ํ•  ํ”Œ๋ ˆ์ด์–ด์˜ ์ข…๋‹จ์†๋„ ์ตœ๋Œ€์น˜")]
public float PeakThreshold = 0f;
[Tooltip("Fall๋กœ ํŒ์ •ํ•  ํ”Œ๋ ˆ์ด์–ด์˜ ์ข…๋‹จ์†๋„ ์ตœ๋Œ€์น˜")]
public float FallThreshold = -10f;

[Header("์ค‘๋ ฅ")]
public float Grvt;
[Tooltip("Peak์‹œ ์ ์šฉํ•  ์ค‘๋ ฅ๋ฐฐ์œจ")]
public float PeakGrvt;
[Tooltip("Fall์‹œ ์ ์šฉํ•  ์ค‘๋ ฅ๋ฐฐ์œจ")]
public float FallGrvt;

void Start() {
Grvt = (2 * JumpHeight) / Mathf.Pow (JumpTime, 2);
JumpPow = Grvt * JumpTime;
PeakGrvt = (-1 * FallThreshold / JumpPeakTime) / Grvt;
FallGrvt = ((2 * JumpHeight
- PeakGrvt * Grvt * Mathf.Pow (JumpPeakTime, 2)
+ 2 * FallThreshold * (JumpTime - JumpPeakTime))
/ Mathf.Pow (JumpTime - JumpPeakTime, 2)) / Grvt;
}


Grvt๋Š” ๋งคํ”„๋ ˆ์ž„ ์บ๋ฆญํ„ฐ ์ข…๋‹จ์†๋„์—์„œ ๋นผ ์ฃผ๊ณ  ์žˆ์–ด์„œ +๊ฐ’์œผ๋กœ ๊ณ„์‚ฐํ–ˆ์Œ


์กธ์—…ํ›„ ์ˆ˜์‹ญ๋…„๋งŒ์— ์—ฐ์Šต์žฅ์—๋‹ค๊ฐ€ ์ˆ˜์‹๋„ ๋„์ ์—ฌ๋ณด๊ณ  ์—‘์…€๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜๋„ ๋Œ๋ ค๋ณด๊ณ  ํ–ˆ์ง€๋งŒ

์ค‘๋ ฅ์ด๋‚˜ JumpPow๊ณ„์‚ฐ์€ ์ž˜๋ชป๋˜์ง€ ์•Š์€๊ฒƒ.. ๊ฐ™์•„


๊ทธ๋Ÿผ ์ ํ”„์‹œ๊ฐ„์€ ์ด 0.6์ดˆ๊ณ  ์ตœ๋Œ€ ๋†’์ด๋„ 6์ด ๋‚˜์™€์•ผ ํ• ํ…๋ฐ ๋ง์ด์•ผ,

๋””๋ฒ„๊ทธ๋กœ ์ฐ์–ด๋ณด๋ฉด

์ ํ”„์‹œ๊ฐ„์€ ์ฃผ๋กœ 0.64์—์„œ 0.66, ์ตœ๋Œ€ 0.62์—์„œ 0.70์ดˆ ์ •๋„๋ฅผ ์™”๋‹ค๊ฐ”๋‹ค ํ•˜๊ณ 

์ตœ๋Œ€๋†’์ด๋Š” 6.3์—์„œ 7์ •๋„๋ฅผ ์™”๋‹ค๊ฐ”๋‹ค ํ•จ.. ์ตœ๋Œ€ 6.0์ด๋ž‘ 7.2 ๊นŒ์ง€๋„ ์ฐํžˆ๋”๋ผ



๋ฌธ์ œ 1.

FPS์— ๋”ฐ๋ผ์„œ ์ •์ƒ๋ณด๋‹ค ์ ํ”„๊ฐ€ ํ•œํ”„๋ ˆ์ธ ๋น ๋ฅด๊ฒŒ ํ˜น์€ ๋А๋ฆฌ๊ฒŒ ๋๋‚  ์ˆ˜ ์žˆ๋‹ค.

-> ๊ทธ๋Ÿฌ๋ฉด ์ ์–ด๋„ 0.6์ดˆ ์–ธ์ €๋ฆฌ์—์„œ ์™”๋‹ค ๊ฐ”๋‹ค ํ•ด์•ผํ•˜๋Š”๊ฑฐ ์•„๋‹๊ฐ€..

๋˜ ์ธ๊ฒŒ์ž„ FPS๋ฅผ ์ฐ์–ด๋ณด๋ฉด ์•ฝ 25ms์ •๋„๊ฐ€ ์ฐํžˆ๋Š”๊ฑธ ๋ณด๋ฉด

์ ํ”„๊ฐ€ ํ•œํ”„๋ ˆ์ž„ ์•ž๋’ค๋กœ ๋น ๋ฅด๊ฑฐ๋‚˜ ๋Šฆ๊ฒŒ ๋๋‚œ๋‹ค๊ณ  ์ณ๋„ ์ตœ๋Œ€ 50ms์ •๋„ ์ฐจ์ด๋งŒ ๋‚˜์•ผํ•˜๋Š”๋ฐ

์–ด์งธ์„œ 80ms๊นŒ์ง€๋„ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š”๊ฐ€ ใ… 


๋ฌธ์ œ 2.

Velocity.y์— ์ ํ”„๋ฅผ ํ•˜๋Š” ์ฒซ ํ”„๋ ˆ์ž„์— JumpPow๋ฅผ ์ ์šฉํ•˜๊ณ  ๊ทธ ๋‹ค์Œ ํ”„๋ ˆ์ž„๋ถ€ํ„ฐ Grvt * deltaTime์„ ๋นผ์ฃผ๋Š”๋ฐ

์ฒซ ํ”„๋ ˆ์ž„๋ถ€ํ„ฐ ์ค‘๋ ฅ์„ ์ ์šฉํ•ด ์ค„์—ฌ์ค˜์•ผ ํ•œ๋‹ค ์ฆ‰ JumpPow๊ฐ€ 40์ธ๋ฐ ์ฒซ ํ”„๋ ˆ์ž„์— 40์ด ์•„๋‹ˆ๋ผ ๋” ์ž‘์€ ์ˆ˜์น˜๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ์…ˆ

-> ์ด๋ ‡๊ฒŒ ๋ฐ”๊พธ๋ฉด ์ ํ”„ ์‹œ๊ฐ„์€ ํ›จ์”ฌ ์•ˆ์ •์ ์œผ๋กœ 0.58~0.62 ์‚ฌ์ด๋กœ ์ฐํž˜. 0.6์ดˆ ยฑ 25ms๋กœ ์ •์ƒ ๋ฒ”์œ„

๊ทธ๋Ÿฌ๋‚˜ ์ ํ”„ ๋†’์ด๊ฐ€ ๋ณดํ†ต 5.5~5.7 ์ •๋„๋กœ ์˜๋„ํ•œ ๋ฐ” ๋ณด๋‹ค ๋‚ฎ๊ฒŒ ๋‚˜์˜ด (์ตœ์†Œ 4.x์ด๋‚˜ 6.x๊นŒ์ง€๋„ ์ฐํž˜..)

๋˜ํ•œ ์ ํ”„์˜ ์˜ค์ฐจ๋ฒ”์œ„๋„ ํ•˜๋“œ์ฝ”์–ด ํ”Œ๋ž˜ํฌ๋จธ ์ž…์žฅ์—์„œ ๋‚˜์™€์„  ์•ˆ๋˜๋Š” ์ˆ˜์ค€์˜ ์˜ค์ฐจ..


๋ฌธ์ œ 3.

Focus๋ชจ๋“œ๋Š” FPS๊ฐ€ ๋„ˆ๋ฌด ๋‚ฎ์•„์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ๋‹ค! ๋นŒ๋“œํ•˜๊ฑฐ๋‚˜ Max๋ชจ๋“œ๋กœ ๋Œ๋ฆฌ๋ฉด FPS๊ฐ€ ๋†’์•„์ ธ์„œ ์˜ค์ฐจ๊ฐ€ ์ค„์–ด๋“ค๊ฒƒ!

์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  max๋กœ ๋Œ๋ ค์„œ 60fps๊ฐ€ ๋˜์—ˆ์ง€๋งŒ ์‹œ๊ฐ„์ด๋‚˜ ๋†’์ด ์˜ค์ฐจ๋Š” ๋”ฑํžˆ ์ค„์–ด๋“ค์ง€ ์•Š์•˜์Œ.

์ •ํ™•ํžˆ ์ˆ˜๋ฐฑ๋ฒˆ ์‹œํ–‰ํ•ด์„œ ํ†ต๊ณ„๋ฅผ ๋‚ด๋ณธ๊ฑด ์•„๋‹ˆ์ง€๋งŒ ๋””๋ฒ„๊ทธ์— ์ฐํžˆ๋Š” ์ตœ๋Œ€ ์ตœ์†Œ๋กœ ์ˆ˜์น˜๋Š” ๊ฑฐ๊ธฐ์„œ ๊ฑฐ๊ธฐ์ž„



๊ทธ๋ž˜์„œ..

์ ํ”„ ์‹œ๊ฐ„์ด๋‚˜ ๋†’์ด์— ์ผ๊ด€์„ฑ์„ ๊ธฐํ•˜๋Š” ๋…ธํ•˜์šฐ๊ฐ€ ์žˆ์„๊นŒ?

์•„๋‹ˆ๋ฉด ๋‚ด๊ฐ€ ์•„์˜ˆ ์ž˜๋ชป ์ ‘๊ทผํ•œ๊ฒŒ ์žˆ์„๊นŒ?

์•„๋‹˜ Float์„ ๋‹ค Double๋กœ ๋ฐ”๊พธ๋ฉด ์ข€ ๋” ์ •ํ™•ํ•œ ๊ณ„์‚ฐ์ด ๋‚˜์˜ฌ๊นŒ?