Unity를 사용한 예제로, C# 스크립트와 간단한 Unity 씬을 설정하는 방법을 안내드리겠습니다.
Unity 프로젝트 설정
Unity 설치: Unity Hub를 통해 Unity를 설치합니다.
새 프로젝트 만들기: Unity Hub에서 새로운 2D 프로젝트를 생성합니다.
필요한 리소스 추가: 강아지 캐릭터와 장애물 이미지를 준비하거나 Unity의 기본 이미지를 사용합니다.
추천 툴 및 리소스
게임 리소스: OpenGameArt, Kenney.nl (무료 아트 리소스)
게임 튜토리얼: YouTube에서 "Unity Game Development tutorial" 또는 "Godot tutorial" 등을 찾아보세요.
음악 및 사운드 효과: freesound.org에서 무료 사운드를 찾을 수 있습니다.
간단한 인디게임은 작은 규모로 시작해도 재미있고 충분히 의미 있는 작품이 될 수 있습니다.
개발 과정에서 배우고 성장하는 것도 큰 재미일 것입니다!
게임의 기본 구조
플레이어(강아지): 달리기와 점프 동작을 합니다.
장애물: 강아지가 피해야 할 장애물입니다.
배경: 스크롤되는 배경으로 게임의 진행을 표현합니다.
필요한 컴포넌트
Rigidbody2D: 물리 엔진을 이용해 점프와 충돌을 처리합니다.
Collider2D: 충돌 감지를 위한 컴포넌트입니다.
Script: 강아지의 움직임과 장애물의 생성 등을 제어하는 스크립트입니다.
1. 강아지 캐릭터 스크립트 (PlayerController.cs)
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class PlayerController : MonoBehaviour { public float moveSpeed = 5f; // 이동 속도 public float jumpForce = 10f; // 점프 힘 private bool isGrounded; // 땅에 있는지 확인 private Rigidbody2D rb; // Rigidbody2D 컴포넌트 private Animator animator; // 애니메이션 컨트롤러
public Transform groundCheck; // 땅 체크 위치 public LayerMask groundLayer; // 땅 레이어
void Update() { // 배경이 일정 속도로 이동 float newPos = Mathf.Repeat(Time.time * scrollSpeed, 20f); transform.position = startPosition + Vector2.left * newPos; } }
설명:
배경이 일정 속도로 왼쪽으로 스크롤되며, 화면 끝에 도달하면 다시 반복됩니다.
4. 게임 오브젝트 설정
플레이어 설정: Unity에서 Player 오브젝트를 만들고, Rigidbody2D와 BoxCollider2D를 추가합니다. 그리고 PlayerController 스크립트를 적용합니다. groundCheck는 Player 오브젝트 아래에 빈 오브젝트로 만들어 위치를 설정해줍니다.
장애물 설정: Obstacle 오브젝트를 만들고, Obstacle 스크립트를 적용합니다.
배경 설정: Background 오브젝트를 만들어, BackgroundScroller 스크립트를 적용합니다.
5. 애니메이션 설정 (Optional)
강아지의 달리기와 점프 애니메이션을 만들고, Animator 컨트롤러에서 속도와 점프 여부에 따라 애니메이션을 변경하도록 설정할 수 있습니다.
6. 장애물 생성 (게임 로직 추가)
게임이 진행됨에 따라 일정 간격으로 장애물을 생성하려면, ObstacleSpawner.cs 같은 스크립트를 만들어 장애물을 일정 시간마다 생성하게 할 수 있습니다.
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class ObstacleSpawner : MonoBehaviour { public GameObject obstaclePrefab; public float spawnInterval = 2f; private float timer;