저처럼 코드 입력하기 싫고 실행을 해보고 싶은 분들,
Ctrl+C, Ctrl+V 복사 붙여넣기 해서 사용하세요.
한 번 실행해 보면 유니티 구조적 이해에 많은 도움됩니다.
김치런 튜토리얼 영상 링크
https://www.youtube.com/watch?v=A58_FWqiekI
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Mover : MonoBehaviour
{
[Header("Settings")]
public float moveSpeed; // 이동 속도를 설정하기 위한 변수
// Update is called once per frame
void Update()
{
// 게임 오브젝트를 왼쪽으로 이동
transform.position += Vector3.left * GameManager.Instance.CalculateGameSpeed() * Time.deltaTime;
}
}
코드 구조 및 주요 기능
플레이어 점프 처리:
Update()에서 스페이스바 입력 감지 후,Rigidbody2D에 위쪽으로 힘을 가해 점프.isGrounded를 이용해 플레이어가 땅에 닿아있을 때만 점프 가능.
코드 분석
Settings섹션:moveSpeed: 게임 오브젝트의 기본 이동 속도를 설정하기 위한 변수이지만, 현재 코드에서는 사용되지 않고 있음.
Update()메서드:- 매 프레임마다
transform.position을 변경하여 오브젝트를 왼쪽으로 이동시킴. - 이동 속도는
GameManager.Instance.CalculateGameSpeed()메서드에 의해 동적으로 계산됨. Time.deltaTime을 곱해 프레임 속도에 관계없이 일정한 속도로 이동하도록 설정.
- 매 프레임마다
GameManager와 연동:GameManager의CalculateGameSpeed()메서드를 호출해 게임의 현재 속도에 따라 오브젝트의 이동 속도를 조정.- 이 구조를 통해 게임이 진행될수록 점점 더 빠르게 이동하도록 설정.
코드 동작
- 게임 내에서 장애물이나 배경 요소와 같은 오브젝트들이 왼쪽으로 이동하는 동작을 구현.
GameManager의 게임 상태에 따라 이동 속도가 동적으로 변경되며, 게임 난이도가 조절됨.
개선 사항
moveSpeed변수 활용:moveSpeed를 기본 이동 속도로 사용하고, 이를GameManager.Instance.CalculateGameSpeed()와 결합하여 속도를 조절할 수 있음.
게임 상태 확인 추가:
GameManager의 상태에 따라 움직임을 멈추거나 다르게 처리할 수 있음. 예를 들어, 게임이GameState.Dead상태일 때 오브젝트를 멈추도록 설정:
이동 방향 변경:
- 현재는 오브젝트가 왼쪽(
Vector3.left)으로만 이동하지만, 게임 디자인에 따라 다른 방향으로도 이동할 수 있도록 확장 가능.
- 현재는 오브젝트가 왼쪽(
최종 구현 예시 (개선 반영):
이 코드는 GameManager의 상태를 확인하고, moveSpeed와 게임 속도를 결합하여 더 유연한 이동 속도 조정이 가능합니다.
댓글 없음:
댓글 쓰기