이전 글 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;
}
}
'공부 > Unity 기초' 카테고리의 다른 글
2D 슈팅 - 8 / 함정 추가 (0) | 2022.05.16 |
---|---|
2D 슈팅 - 7 / 총알 추가 (0) | 2022.05.16 |
2D 슈팅 - 5 / 에셋 적용하기 (0) | 2022.05.16 |
2D 슈팅 - 4 / 이펙트, 오디오 적용, 동적 배경 스크롤 (0) | 2022.05.15 |
2D 슈팅 - 3 / 충돌 시스템 구현 (0) | 2022.05.15 |