ํ•˜

๋ณ„ ๊ฐ™์ž–์€ ๊ฑฐ ์“ฐ์ง€๋„ ์•Š์•˜๋Š”๋ฐ

์‹คํ–‰๋Œ๋ฆฌ๊ณ  ์˜ค๋ฅ˜999์ฐ๋”๋‹ˆ

๊ทธ๋Œ€๋กœ ์œ ๋‹ˆํ‹ฐ ์—๋””ํ„ฐ ๊ฐœ๋А๋ ค์ง

ํด๋”๊ฐ™์€ ๊ฑด ๋“ค์–ด๊ฐ€์ง€์ง€๋„ ์•Š์Œ ๋”๋ธ”ํด๋ฆญํ•ด๋„

์ปค์„œ ํด๋”์— ์˜ฌ๋ ค๋‘๋ฉด 3์ดˆ ํ›„์— ๊ฐ„์‹ ํžˆ ํด๋”์— ๋ถˆ์ด ๋“ค์–ด์˜ค๋Š” ์ •๋„

๋ญ๊ฐ€๋ฌธ์ ค๊นŒ ๊ฐœ๊ฐ™๋„ค ์ง„์งœ



** ์ฝ”๋“œ **
์Šคํฌ๋ฆฝํŠธ ๋‘ ๊ฐœ / ํ•˜์ด์–ด๋ผํ‚ค์—๋Š” ํ”Œ๋ ˆ์ด์–ด๋ง๊ณค ๋ฐฐ์น˜ํ•ด๋‘” ๊ฒŒ ์—†์Œ

1.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MouseMovement : MonoBehaviour
{
ย ย ย ย public float mouseSensitivity = 100f;ย ย  //๋งˆ์šฐ์Šค ๊ฐ๋„

ย ย ย ย float xRotation = 0f;
ย ย ย ย float YRotation = 0f;ย ย  //x์ถ•, y์ถ• ํšŒ์ „ ์ œ์–ด

ย ย ย ย void Start()
ย ย ย ย {
ย ย ย ย ย ย ย ย Cursor.lockState = CursorLockMode.Locked;ย ย  //์ปค์„œ๋ฅผ ์ค‘์•™์— ์ž ๊ทธ๊ณ  ๋ณด์ด์ง€ ์•Š๊ฒŒ๋” ํ•˜๋Š” ์ฝ”๋“œ
ย ย ย ย }

ย ย ย ย void Update()
ย ย ย ย {
ย ย ย ย ย ย ย ย float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;ย ย ย ย //mouseSensitivity: ๊ฐ๋„๊ฐ€ ๋А๋ฆฌ๋ฏ€๋กœ ์‹ค์ˆ˜ ๊ณฑํ•ด์„œ ๋น ๋ฅด๊ธฐ ์กฐ์ •
ย ย ย ย ย ย ย ย float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;ย ย ย ย //๋งˆ์šฐ์Šค ์ž…๋ ฅ ์ˆ˜์‹ , ์ธํ’‹๋งค๋‹ˆ์ €์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Œ

ย ย ย ย ย ย ย ย xRotation -= mouseY;ย ย ย ย //์ œ์–ด x์ถ•์„ ์ค‘์‹ฌ์œผ๋กœ ํšŒ์ „ //๊ฐ๋„๋Š” ๋งˆ์ด๋„ˆ์Šค!, ๋ฐฉํ–ฅ์ด ๋‹ค๋ฅด๋‹ˆ๊นŒ.

ย ย ย ย ย ย ย ย xRotation = Mathf.Clamp(xRotation, -90f, 90f); //๊ณผํšŒ์ „์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ๋” ์‹ค์ œ์ฒ˜๋Ÿผ ๊ณ ์ •

ย ย ย ย ย ย ย ย YRotation += mouseX;ย ย ย ย //์ œ์–ด y์ถ•์„ ์ค‘์‹ฌ์œผ๋กœ ํšŒ์ „(์ƒํ•˜)

ย ย ย ย ย ย ย ย transform.localRotation = Quaternion.Euler(xRotation, YRotation, 0f);ย ย  //์–‘์ชฝ ํšŒ์ „ ์ ์šฉ

ย ย ย ย }
}


2.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
ย ย ย ย public CharacterController controller;

ย ย ย ย public float speed = 12f;
ย ย ย ย public float gravity = -9.81f * 2;
ย ย ย ย public float jumpHeight = 3f;

ย ย ย ย public Transform groundCheck;
ย ย ย ย public float groundDistance = 0.4f;
ย ย ย ย public LayerMask groundMask;

ย ย ย ย Vector3 velocity;

ย ย ย ย bool isGrounded;

ย ย ย ย void Update()
ย ย ย ย {ย ย ย ย ย ย ย ย 
isGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, groundMask);

ย ย ย ย ย ย ย ย if (isGrounded && velocity.y < 0)
ย ย ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย ย ย ย ย velocity.y = -2f;
ย ย ย ย ย ย ย ย }

ย ย ย ย ย ย ย ย float x = Input.GetAxis("Horizontal");
ย ย ย ย ย ย ย ย float z = Input.GetAxis("Vertical");

ย ย ย ย ย ย ย ย Vector3 move = transform.right * x + transform.forward * z;

ย ย ย ย ย ย ย ย controller.Move(move * speed * Time.deltaTime);

ย ย ย ย ย ย ย ย if (Input.GetButtonDown("Jump") && isGrounded)
ย ย ย ย ย ย ย ย {
ย ย ย ย ย ย ย ย ย ย ย ย velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity);
ย ย ย ย ย ย ย ย }

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

ย ย ย ย ย ย ย ย controller.Move(velocity * Time.deltaTime);
ย ย ย ย }
}