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

2D 슈팅 - 6 / 이동속도 증감

by svcbn 2022. 5. 16.

이전 글 PlayerMove (2D 슈팅 - 1)

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

 

 

 

왼쪽 Shift를 눌렀을 때 속도가 2배로 증가, 떼면 초기속도로 회복

// 만일, 키보드의 왼쪽 Shift 키를 눌렀다면
        if(Input.GetKeyDown(KeyCode.LeftShift))
        {
            // speed 변수의 값을 2배로 늘린다.
            finalSpeed = speed * 2;
        }

        // 그렇지 않고 만일, 키보드의 왼쪽 Shift 키를 뗏다면
        else if(Input.GetKeyUp(KeyCode.LeftShift))
        {
            // speed 변수의 값을 원래대로 돌려 놓는다.
            finalSpeed = speed;
        }

 

Getkey > Getbutton은 마우스의 버튼 가져오기, Getkey는 키보드의 버튼 가져오기.

 

 

PlayerMove 전문

더보기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMove : MonoBehaviour
{
    public float speed = 5;
    public float finalSpeed = 0;

    // 현재 점수
    public int score = 0;

    // Background 클래스 호출
    public Background bg;

    int checkPoint = 0;

    
    // Start is called before the first frame update
    void Start()
    {
        finalSpeed = speed;
    }

    // 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();


        // 만일, 키보드의 왼쪽 Shift 키를 눌렀다면
        if(Input.GetKeyDown(KeyCode.LeftShift))
        {
            // speed 변수의 값을 2배로 늘린다.
            finalSpeed = speed * 2;
        }

        // 그렇지 않고 만일, 키보드의 왼쪽 Shift 키를 뗏다면
        else if(Input.GetKeyUp(KeyCode.LeftShift))
        {
            // speed 변수의 값을 원래대로 돌려 놓는다.
            finalSpeed = speed;
        }


        // 플레이어를 이동하고싶다.
        // 이동공식 P = P0 + vt
        transform.position += dir * finalSpeed * Time.deltaTime;


        // score 값이 10의 배수가 될 때마다 bg에 있는 ScrollSpeedUp 함수 호출
        if (score % 10 == 0 && score > checkPoint)
        {
            bg.ScrollSpeedUp(20.0f);
            checkPoint = score;
        }
    }

    // 점수 획득을 위한 함수
    public void AddScore(int point)
    {
        // 매개변수 point를 통해서 받은 값을 score 변수에 누적시킨다.
        score += point;
    }
}