using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//사용자의 입력에 따라 플레이어를 이동하고 싶다.
public class PlayerMove : MonoBehaviour
{
public float speed = 5;
//기획자가 speed를 수정하려면 유니티 에디터 상에서 수정할 수 있어야 하기 때문에 public써줌
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
//사용자의 입력에 따라 플레이어를 이동하고 싶다.
// 1. 사용자의 입력에 따라
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
//Horizontal과 Vertical도 유니티의 Edit -> Project Settings -> Input Manager -> Axes를 열어보면 Name으로 들어가있음
//print(h); // a키, 아무것도 누르지 않았을 때, d키눌렀을 때 -> -1,0,1
// 2. 방향을 만들고
Vector3 dir = Vector3.right * h + Vector3.up * v;
// right : [0, 0, 0] [1, 0, 0] [-1, 0, 0] 값이 나올 수 있음
// up : [0, 0, 0] [0, 1, 0] [0, -1, 0] 값이 나올 수 있음
//right+up : 벡터값임 a벡터 + b벡터 같은 개념
/*
* 문제발생!
* 두 방향키를 같이 누르게 되면 (대각선 이동 시) 대각선 벡터기 때문에 움직임의 크기가 더 커서 속도가 빨라짐
* 따라서 벡터를 정규화(Nomalize) 시켜줘야함 -> 크기가 1인 벡터로 만들어줌
*/
dir.Normalize(); //정규화 함수
// 3. 그 방향으로 플레이어를 이동하고 싶다
//이동공식 P=P0+vt
transform.position += dir * speed * Time.deltaTime;
}
}
'etc. > 🕹️unity' 카테고리의 다른 글
3D FPS (0) | 2022.06.11 |
---|---|
unity shader, effect, light & 지형 만들기 (0) | 2022.06.11 |
간단 실습 - fps 게임 (0) | 2022.06.11 |
unity 물리엔진과 충돌 시스템 (0) | 2022.06.11 |
작년 공부 기록용 (0) | 2022.06.11 |
댓글