본문 바로가기
공부/Unity 기초

2D 슈팅 - 1 / 사용자 입력 제어 및 오브젝트 이동 처리

by svcbn 2022. 5. 15.

사용자 입력 제어 (방향)

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

public class PlayerMove : MonoBehaviour
{
    public float speed = 5;
    
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        // 사용자의 입력에 따라
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");

        // 방향을 만들고
        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]

        // 대각선 이동시 움직임의 크기가 더 크다
        // 벡터를 정규화 하고싶다.
        dir.Normalize();

        // 플레이어를 이동하고싶다.

        // 이동공식 P = P0 + vt
        transform.position += dir * speed * Time.deltaTime;
    }
}

 

Public > Script에 진입하지 않고도 Unity 상에서 변수 조절가능.

 

deltaTime = 프레임에 따라 속도가 달라지는 것을 방지하기 위한 시간 보정.

 

 

 

사용자 입력 (발사)

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

// 사용자가 마우스 왼쪽버튼을 누르면
// 총알을 발사하고싶다. (Bullet prefab을 읽어와서 총구 위치에 가져다 놓고싶다.)

public class PlayerFire : MonoBehaviour
{
    // 총알공장
    public GameObject bulletFactory;

    // 총구위치
    public GameObject firePosition;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        // 만약 사용자가 마우스 왼쪽버튼을 누르면
        if (Input.GetButtonDown("Fire1"))
        {
            // 총알공장에서 총알을 만들어서
            GameObject bullet = Instantiate(bulletFactory);

            // 총구 위치에 가져다 놓고싶다.
            bullet.transform.position = firePosition.transform.position;
        }



    }
}

 

GetButton > 버튼 입력 감지

 

Instantiat > 생성함수

'공부 > Unity 기초' 카테고리의 다른 글

2D 슈팅 - 3 / 충돌 시스템 구현  (0) 2022.05.15
2D 슈팅 - 2 / 총알, 적 제작  (0) 2022.05.15
가운데 문자 가져오기  (0) 2022.05.15
문자열 나누기  (0) 2022.05.13
영단어 숫자 바꾸기  (0) 2022.05.12