์ง€๊ธˆ ์ŠคํŒŒ๊ฒŒํ‹ฐ์†Œ์Šค ๋‹ค ๋•Œ๋ ค์น˜์šฐ๊ณ  fsm์œผ๋กœ ๋ฐฐ์šฐ๋ฉด์„œ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๋‰ด๋น„์ธ๋ฐ

์ƒํƒœ๊ฐ€ ์—„์ฒญ๋งŽ์Œ. ์ ํ”„ ์ด๋™ ๊ณต๊ฒฉ ๋Œ€๊ธฐ ๊ธฐ์–ด๋‹ค๋‹ˆ๊ธฐ ๋ฒฝ์—๋ถ™๊ธฐ ๋ฒฝ์ ํ”„...๋“ฑ

๊ทผ๋ฐ ๊ณต๊ฒฉ์€ ์–ด๋–ค์ƒํƒœ์—์„œ๋“  ๊ณต๊ฒฉ์„ ํ•˜๋ฉด ๊ณต๊ฒฉ๋ชจ์…˜์ด ๋‚˜๊ฐ€์•ผํ•˜๋„๋ก ๋งŒ๋“ค๊ฒ๋‹ˆ๋‹ค.


fsm ์ง€๊ธˆ ์ƒํƒœ ํ•˜๋‚˜ํ•˜๋‚˜ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค์–ด๋‘๊ณ  enter, execute, exit๋กœ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ

๋ชจ๋“  ํด๋ž˜์Šค(์ƒํƒœ)์˜ execute์— while๋ฌธ์—์„œ ๊ณต๊ฒฉํ•˜๋Š”์ง€ ์ฒดํฌ๋ฅผ ํ•ด์ค˜์•ผํ•˜๋‚˜์š”?

๊ณต๊ฒฉ์€ ๋ฌด์กฐ๊ฑด ์šฐ์„ ๊ถŒ์ด ์žˆ๋Š”๋ฐ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉํ•ด์„œ ๋งŒ๋“ค์ˆ˜ ์žˆ์„๊ฑฐ๊ฐ™์•„์„œ ๋ฌผ์–ด๋ด…๋‹ˆ๋‹ค





---์ˆ˜์ •---



24b0d121e09c28a8699fe8b115ef046ec34dcaf7


์ง€๊ธˆ๊นŒ์ง€ ์ƒ๊ฐํ•ด๋‘”๊ฒŒ ์—ฌ๊ธฐ๊นŒ์ง€์ธ๋ฐ,

๊ณต๊ฒฉ์ด ์–ด๋–ค์ƒํƒœ์—์„œ๋“  ์‹คํ–‰๋˜๊ณ  ์–ด๋–ค๊ฑฐ๋กœ๋“  ์ „์ด๋ ์ˆ˜ ์žˆ๋Š”๋ฐ, attack์—์„œ ์ „์ด๋˜๋Š” ๋‹ค๋ฅธ๊ฑฐ๋Š” ๋ชจ๋“ ๊ฒฝ์šฐ๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๋ด์„œ ํ™”์‚ดํ‘œ ์•ˆ๊ทธ์–ด๋’€์Šต๋‹ˆ๋‹ค.

๊ณต๊ฒฉ์ƒํƒœ๋Š” ์–ด๋–ค ๊ฒฝ์šฐ์—๋„ xํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ๊ณต๊ฒฉ์ด ๋‚˜๊ฐ€๋Š”๋ฐ

ํ˜„์žฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

namespace PlayerOwnedStates
{
public class Idle : State
{
public override void Enter(Player player)
{
}

public override void Execute(Player player)
{
//๊ณ„์† ์‹คํ–‰
if(player.hAxis!=0)
{
player.changeState(PlayerStates.Move);
}
}

public override void Exit(Player player)
{
Debug.Log("a");
}
}

๊ทธ๋Ÿฌ๋ฉด execute์—์„œ ์ƒํƒœ ์ฒดํฌํ•˜๊ณ  state๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ
์ง€๊ธˆ attack๊ฐ€ ๋ชจ๋“ ๊ฒฝ์šฐ์—์„œ ๊ฐ€๋Šฅํ•˜๋‹ˆ๊นŒ
public class Move ...
public class Jump ...
์ด๋Ÿฐ ๋ชจ๋“  ํด๋ž˜์Šค์—์„œ execute์— if(Input.getKeyDown("x") {~} ์ด๊ฑธ ๋„ฃ์–ด์ค˜์•ผํ•˜๋‚˜์š”?



์•„๋‹ˆ๋ฉด ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•˜๋Š”๊ฒŒ ์•„๋‹Œ๊ฑด๊ฐ€์š”?
์œ ํŠœ๋ธŒ ๋ณด๊ณ  ๋”ฐ๋ผํ–ˆ๋Š”๋””