์œ ๋‹ˆํ‹ฐ ์œ ํŠœ๋ธŒ ๋ณด๋ฉด์„œ ๋ฐฐ์šฐ๊ณ ์žˆ๋Š”๋ฐ 3D ์›€์ง์ด๋Š” ๋ถ€๋ถ„ ๊ตฌํ˜„ํ•˜๊ณ ์žˆ๊ฑฐ๋“ฑ?

๊ทผ๋ฐ ๋ฐฉํ–ฅํ‚ค๋กœ ์›€์ง์ด๋Š” ๋ถ€๋ถ„์€ ์ž˜ ๋˜๋Š”๋ฐ ์ ํ”„ ๋ถ€๋ถ„์ด ์ž˜ ์•ˆ๋˜์„œ;

์ ํ”„ ์ŠคํŽ˜์ด์Šค๋ฐ”ํ‚ค๋กœ ์„ค์ •ํ•ด๋†จ๋Š”๋ฐ ์ŠคํŽ˜์ด์Šค๋ฐ” ํ•œ 10๋ฒˆ ์—ฐํƒ€ํ•˜๋ฉด

์ ํ”„ ํ•œ๋ฒˆ ๊ตฌํ˜„ํ•œ๋Œ€๋กœ ์ž˜ ๋‚˜๊ฐ€๋Š”๋ฐ

ํ˜น์‹œ ์ด๋Ÿฐ ์ข…๋ฅ˜์— ์˜ค๋ฅ˜๋Š” ๋ญ๊ฐ€ ๋ฌธ์ œ์ธ์ค„ ์•Ž??


public class PlayerMovement : MonoBehaviour

{

private float moveSpeed = 5.0f;

private Vector3 moveDirection;

private float gravity = -9f;

private CharacterController characterController;

private float jump = 3.0f;


private void Awake()

{

characterController = GetComponent<CharacterController>();

}


private void Update()

{

if(characterController.isGrounded == false)

{

moveDirection.y += gravity * Time.deltaTime;ย 

}


characterController.Move(moveDirection * moveSpeed * Time.deltaTime);

}


public void MoveTo(Vector3 direction)

{

moveDirection = new Vector3(direction.x, moveDirection.y, direction.z);

}

public void JumpTo()

{

if (characterController.isGrounded == true)

{

moveDirection.y = jump;

}

}

}











public class PlayerController : MonoBehaviour
{
ย  ย  private PlayerMovement movement3D;
private KeyCode jumpKeyCode = KeyCode.Space;

private void Awake()
{
movement3D = GetComponent<PlayerMovement>();
}

private void Update()
{
float x = Input.GetAxisRaw("Horizontal");
float z = Input.GetAxisRaw("Vertical");

movement3D.MoveTo(new Vector3(x, 0, z));

if (Input.GetKey(jumpKeyCode))
{
movement3D.JumpTo();
}
}
}