본문 바로가기
etc./🕹️unity

사용자 입력 제어 및 오브젝트 이동 처리

by yewoneeee 2022. 6. 11.
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

댓글