-
[3D MINI Project] 플레이어 이동 코드 작성, 넘어짐 수정유니티 2022. 11. 5. 16:58728x90
[3D MINI Project] 3D 미니 프로젝트 기획
하려고 했는데
아 개답답해!!!!!!!!!!!!!!!
그냥 놔둬봤더니 또 되더라...ㅎㅎ...
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player_Controller : MonoBehaviour { Rigidbody playerRigidbody; public float speed = 8f; // Start is called before the first frame update void Start() { playerRigidbody = GetComponent<Rigidbody>(); } // Update is called once per frame void Update() { //if(Input.GetKey(KeyCode.UpArrow)==true) //{ // playerRigidbody.AddForce(0f, 0f, speed); //} //if (Input.GetKey(KeyCode.DownArrow) == true) //{ // playerRigidbody.AddForce(0f, 0f, -speed); //} //if (Input.GetKey(KeyCode.RightArrow) == true) //{ // playerRigidbody.AddForce(speed, 0f,0f); //} //if (Input.GetKey(KeyCode.LeftArrow) == true) //{ // playerRigidbody.AddForce(-speed, 0f, 0f); //} // 수평과 수직축 입력값을 감지 및 저장 float xInput = Input.GetAxis("Horizontal"); float zInput = Input.GetAxis("Vertical"); // 실제 이동 속도를 입력값과 이동 속력을 통해 결정 float xSpeed = xInput * speed; float zSpeed = zInput * speed; // Vec3 속도로 생성 Vector3 newVelocity = new Vector3(xSpeed, 0, zSpeed); // RigidBody에 할당 playerRigidbody.velocity = newVelocity; } public void Die() { gameObject.SetActive(false); // 죽으면 비활성화 GameMAnager gameManager = FindObjectOfType<GameMAnager>(); gameManager.EndGame(); } }
어쨌든 이건 기존 게임 코드인데
뜯어서 살펴보면
먼저 주석 처리된 것은 유니티에 있는 거를
사용하지 않고 플레이어를 움직이는 코드
Input.GetAxis("") 안에
Horizontal, Vertical을 넣으면
유니티에서 알아서 인지하고 움직일 수 있다.
void Update() { // 수평과 수직축 입력값을 감지 및 저장 float xInput = Input.GetAxis("Horizontal"); float zInput = Input.GetAxis("Vertical"); }
일단 Update() 문 안에 이 친구를 넣어줬다.
아 안움직이지
바본가
Rigidbody 안 함ㅋㅋㅋㅋㅋㅋㅋㅋ
아 이제 넣어줌 ㅎㅎ
코드에도 Rigidbody를 넣어주고
설정을 해줘야겠다.
예...
움직이네......
이렇게 제멋대로 눕고 난리 칠 때는
Freeze를 건드려볼 필요가 있다.
엉엉...
뇌 없이 클릭해봤더니
드러누웠다.
필자는 수학 전공자sin cos tan를 활용하여이 친구의 움직임을 판단해보자.물론 개소리다.아
Rotation이 그 축 기준 회전이구나
ㅅㅂ;;;
그걸 이제 알다니...
뭐 어쨌든
원하는 대로 돌아가고 움직이기 성공
스피드를 바꿨는데도
Inspector창은 그대로라서
당황했다.
Inspector에서 speed를 수정해서
답답함을 날려줌.
일단 풀코드
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player_Controller_3D : MonoBehaviour { Rigidbody playerRigidbody; public float speed = 30f; // Start is called before the first frame update void Start() { playerRigidbody = GetComponent<Rigidbody>(); } // Update is called once per frame void Update() { // 수평과 수직축 입력값을 감지 및 저장 float xInput = Input.GetAxis("Horizontal"); float zInput = Input.GetAxis("Vertical"); // 실제 이동 속도를 입력값과 이동 속력을 통해 결정 float xSpeed = xInput * speed; float zSpeed = zInput * speed; // Vec3 속도로 생성 Vector3 newVelocity = new Vector3(xSpeed, 0, zSpeed); // RigidBody에 할당 playerRigidbody.velocity = newVelocity; } }
728x90'유니티' 카테고리의 다른 글
유니티 3D 화면에서 UI가 나타나지 않을때 해결방법 (0) 2022.11.06 [3D MINI Project] 카메라 각도 플레이어 뒤에서 잡기 (0) 2022.11.06 [3D MINI Project] 기본 구조 배치 (0) 2022.11.05 유니티 에셋 - RPG 몬스터 아트 및 애니메이션 (0) 2022.11.03 유니티 에셋 - RPG 여성 캐릭터 아트 및 애니메이션 (0) 2022.11.03