728x90
728x90
이번 포스팅에서는 플레이어가 게임에서 도전 과제를 느끼고 몰입할 수 있도록 점수 시스템과 아이템 기능을 추가해 보겠습니다. 점수 시스템은 플레이어가 더 높은 기록을 달성하려는 동기를 부여하며, 아이템은 게임에 변화를 주어 재미를 더할 수 있습니다.
1. 점수 시스템 구현
1.1 ScoreManager 스크립트 작성
- Assets > Scripts 폴더에 ScoreManager.cs라는 새 스크립트를 생성합니다.
- 아래와 같이 작성합니다
using UnityEngine;
using UnityEngine.UI;
public class ScoreManager : MonoBehaviour
{
public int score = 0; // 현재 점수
public Text scoreText; // 점수 UI 텍스트
void Start()
{
UpdateScoreUI();
}
public void AddScore(int amount)
{
score += amount;
UpdateScoreUI();
}
void UpdateScoreUI()
{
scoreText.text = "Score: " + score;
}
}
3. 이 스크립트는 점수를 관리하고 UI에 실시간으로 업데이트합니다.
1.2 점수 UI 추가
- Canvas에 텍스트 UI를 추가합니다:
- **Hierarchy > Create > UI > Text (TextMeshPro)**를 선택하여 ScoreText 오브젝트를 생성합니다.
- 텍스트 내용을 기본적으로 Score: 0으로 설정합니다.
- 위치는 화면 상단에 적절히 배치합니다.
- ScoreManager 스크립트를 새 빈 오브젝트(GameManager)에 추가합니다.
- Inspector에서 scoreText 필드에 ScoreText를 드래그하여 연결합니다.
1.3 적 처치 시 점수 추가
- EnemyDamage 스크립트를 수정하여 적이 파괴될 때 점수를 추가합니다
using UnityEngine;
public class EnemyDamage : MonoBehaviour
{
public int damage = 1; // 적이 줄 피해량
public int scoreValue = 10; // 적 처치 시 추가될 점수
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
PlayerHealth playerHealth = other.GetComponent<PlayerHealth>();
if (playerHealth != null)
{
playerHealth.TakeDamage(damage);
}
ScoreManager scoreManager = FindObjectOfType<ScoreManager>();
if (scoreManager != null)
{
scoreManager.AddScore(scoreValue);
}
Destroy(gameObject);
}
}
}
2. Enemy 프리팹에서 scoreValue를 10으로 설정합니다.
2. 아이템 추가
아이템은 게임에 변화를 주어 플레이어에게 새로운 기회를 제공합니다. 여기에서는 체력 회복 아이템을 추가하겠습니다.
2.1 HealthPickup 스크립트 작성
- Assets > Scripts 폴더에 HealthPickup.cs라는 새 스크립트를 생성합니다.
- 아래와 같이 작성합니다
using UnityEngine;
public class HealthPickup : MonoBehaviour
{
public int healAmount = 1; // 회복량
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
PlayerHealth playerHealth = other.GetComponent<PlayerHealth>();
if (playerHealth != null)
{
playerHealth.TakeDamage(-healAmount); // 체력 회복
}
Destroy(gameObject); // 아이템 제거
}
}
}
2.2 체력 아이템 생성
- Hierarchy > Create > 2D Object > Sprite를 선택하여 체력 아이템 오브젝트를 생성합니다.
- 이름: HealthPickup
- 스프라이트: 체력과 관련된 아이콘(예: 하트 이미지)
- HealthPickup 오브젝트에 Circle Collider 2D를 추가하고 Is Trigger를 체크합니다.
- HealthPickup 오브젝트에 HealthPickup 스크립트를 추가합니다.
- Assets > Prefabs 폴더에 드래그하여 프리팹으로 저장합니다.
2.3 아이템 스폰 추가
- 기존의 EnemySpawner 스크립트를 활용하여 아이템을 생성합니다
public GameObject healthPickupPrefab; // 아이템 프리팹
public float itemSpawnInterval = 10f; // 아이템 생성 간격
void Start()
{
InvokeRepeating("SpawnEnemy", 1f, spawnInterval);
InvokeRepeating("SpawnHealthPickup", 5f, itemSpawnInterval);
}
void SpawnHealthPickup()
{
Vector2 spawnPosition = Random.insideUnitCircle * spawnRadius;
Instantiate(healthPickupPrefab, spawnPosition, Quaternion.identity);
}
2. EnemySpawner 오브젝트에서 healthPickupPrefab 필드에 HealthPickup 프리팹을 연결합니다.
3. 테스트 및 조정
- Play 모드로 실행
- 적이 파괴될 때 점수가 증가하는지 확인합니다.
- 아이템이 생성되고, 플레이어와 충돌 시 체력이 회복되는지 확인합니다.
- 난이도와 밸런스 조정
- **아이템 생성 간격(itemSpawnInterval)**이나 **체력 회복량(healAmount)**을 조정하여 게임 난이도를 적절히 설정합니다.
- 점수 증가량(scoreValue)을 조정하여 플레이어가 성취감을 느낄 수 있도록 조율합니다.
4. 다음 단계 예고
이번 포스팅에서는 점수 시스템과 체력 회복 아이템을 추가해 게임에 도전 과제와 재미 요소를 더했습니다. 이제 게임이 플레이어에게 더 많은 동기를 부여할 수 있게 되었네요! 다음 포스팅에서는 최고 점수 저장 및 점수판 시스템을 추가하여, 플레이어가 자신의 기록을 확인하고 경쟁할 수 있는 환경을 만들어 보겠습니다.
다음 포스팅에서 만나요! 🕹️
728x90
'유니티 > 닷지 게임 만들기' 카테고리의 다른 글
Dodge Game 만들기 #6 - 게임 빌드 및 최종 조정 (2) | 2024.11.20 |
---|---|
Dodge Game 만들기 #5 - 점수판과 최고 점수 저장 시스템 (0) | 2024.11.19 |
Dodge Game 만들기 #3 - 충돌 처리와 플레이어 체력 시스템 (0) | 2024.11.17 |
Dodge Game 만들기 #2- 적 오브젝트 생성과 플레이어 추적 (3) | 2024.11.16 |
Dodge Game 만들기 #1 - 기본 게임설정과 플레이어 이동 (0) | 2024.11.14 |