저처럼 코드 입력하기 싫고 실행을 해보고 싶은 분들,
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
와 게임 속도를 결합하여 더 유연한 이동 속도 조정이 가능합니다.
댓글 없음:
댓글 쓰기