본문 바로가기
개발/C#

유니티 C# 간단한 디펜스 게임 만들기 Defense

by SPNK 2024. 3. 14.
반응형

적 코드

using UnityEngine;

public class Enemy : MonoBehaviour
{
    public float speed = 5f; // 적의 이동 속도

    void Update()
    {
        Move(); // 이동 함수 호출
    }

    void Move()
    {
        // 적이 현재 위치에서 목표 지점으로 이동하는 방향을 계산합니다.
        Vector3 moveDirection = Vector3.left;

        // 적을 목표 지점으로 이동합니다.
        transform.Translate(moveDirection * speed * Time.deltaTime);
    }
}

 

타워 코드

public class Tower : MonoBehaviour
{
    public GameObject bulletPrefab; // 발사체 프리팹
    public Transform firePoint; // 발사 지점
    public float fireRate = 1f; // 발사 속도
    private float fireCountdown = 0f; // 발사 대기 시간

    void Update()
    {
        if (fireCountdown <= 0f)
        {
            Shoot(); // 발사 함수 호출
            fireCountdown = 1f / fireRate; // 발사 대기 시간 재설정
        }

        fireCountdown -= Time.deltaTime; // 발사 대기 시간 감소
    }

    void Shoot()
    {
        // 발사체를 발사 지점에서 생성합니다.
        Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
    }
}

 

총알 코드

public class Bullet : MonoBehaviour
{
    public float speed = 20f; // 발사체 속도
    public int damage = 10; // 발사체 데미지

    void Update()
    {
        Move(); // 이동 함수 호출
    }

    void Move()
    {
        // 발사체를 앞으로 이동시킵니다.
        transform.Translate(Vector3.right * speed * Time.deltaTime);
    }

    void OnTriggerEnter2D(Collider2D hitInfo)
    {
        // 충돌한 객체가 적인지 확인합니다.
        Enemy enemy = hitInfo.GetComponent<Enemy>();
        if (enemy != null)
        {
            enemy.TakeDamage(damage); // 적에게 데미지를 입힙니다.
            Destroy(gameObject); // 발사체를 파괴합니다.
        }
    }
}

 

적 소환

public class EnemySpawner : MonoBehaviour
{
    public GameObject enemyPrefab; // 적 프리팹
    public Transform spawnPoint; // 생성 지점
    public float spawnRate = 2f; // 생성 속도
    private float spawnCountdown = 0f; // 생성 대기 시간

    void Update()
    {
        if (spawnCountdown <= 0f)
        {
            SpawnEnemy(); // 적 생성 함수 호출
            spawnCountdown = 1f / spawnRate; // 생성 대기 시간 재설정
        }

        spawnCountdown -= Time.deltaTime; // 생성 대기 시간 감소
    }

    void SpawnEnemy()
    {
        // 생성 지점에서 적을 생성합니다.
        Instantiate(enemyPrefab, spawnPoint.position, spawnPoint.rotation);
    }
}
반응형

댓글