프로젝트해요/게임_개발

[Unity] #7. 슈팅 게임 제작(3)

yenas0 2023. 7. 5. 08:38
반응형

 

 

목차

1. 폴리싱
2. 배경 및 효과

 

 


 

1. 폴리싱

 

 

 

 

- 사용자(Player) 폴리싱

 

상단바에서 [Window] - [Asset Store] 를 클릭한다.

 

 

 

 

Search online버튼을 누르면 Asset을 다운받을 수 있는 사이트로 연결된다.

 

 

 

 

 

awesome cartoon airplane 을 검색하여 다음 Asset을 다운 받는다.

 

내 에셋에 추가하기

 

 

 

 

[Download]  - [Import]

 

 

 

Import 로 적용시킨다.

 

 

 

 

 

Plane1Player에 마우스 드래그 & 드랍하여 적용시킨다.

 

 

 

 

[Inspector] 에서 PlayerCubeMesh RendererRemove Component한다.

 

 

 

다음으로는 비행기의 크기를 화면에 맞출 수 있도록 0.2정도로 조정한다.

 

또한 현재 슈팅게임은 3D로 제작은 하지만 한 평면에서만 바라보므로 비행기의 방향을 현재 보고 있는 방향에 맞게 Rotation을 돌려준다.

 

 

 

 

 

 

 

- 적(Enemy) 폴리싱

 

앞선 과정과 마찬가지로 이번에는 Plane2Enemy 오브젝트에 드래그&드랍한다.

[Inspector] 에서 PlayerCubeMesh RendererRemove Component도 한다.

 

 

 

 

크기와 위치도 조정해준다.

 

 

 

 

 

 

 

- 총알(Bullet) 폴리싱

 

이번에도 Asset Store로 들어가서 rocket missile bombs를 검색한다.

첫번째 뜨는 Asset을

Download

하고 앞선과정과 동일하게 Import하면 된다.

 

 

 

 

Prefabs파일에 있던 Bullet을 클릭하여 노란로켓모양을 마우스 드래그 & 드랍한다.

 

 

 

 

크기를 조정해준다

 

 

 

 

 

크기를 변경하면서 충돌범위가 맞지않게 되었으므로 Box Collider의 크기도 수정하여 크기를 맞추어 준다.

 

 

 

 

 

폴리싱을 마친 후의 실행결과이다.

 

 

 

 

 

 

 

 

2. 배경 및 효과

 

 

 

 

- 폭발 효과

 

 

위와 동일하게 Download하고 Import한다

 

이 효과를 사용하기 위해서는 Script를 수정해야 한다.

 

Enemy 스크립트를 visual studio로 실행시킨다.

 

 

 

기존 코드를 변경하여 다음과 같이 작성한다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Enemy : MonoBehaviour
{
    public float speed = 5;

    Vector3 dir;

    public GameObject explosionFactory;

    // Start is called before the first frame update
    void Start()
    {
        int randValue = Random.Range(0, 10); //0부터 9까지의 값만 나온다

        if(randValue < 3)
        {
            GameObject target = GameObject.Find("Player");

            dir = target.transform.position - transform.position; //적과 플레이어 거리 벡터 계산
            dir.Normalize(); //단위벡터로 바꿈
        }
        else
        {
            dir = Vector3.down;
        }
    }

    // Update is called once per frame
    void Update()
    {
        transform.position += dir * speed * Time.deltaTime;
    }

    void OnCollisionEnter(Collision other)
    {
        GameObject explosion = Instantiate(explosionFactory);

        explosion.transform.position = transform.position;

        Destroy(other.gameObject);
        Destroy(gameObject);
    }
}

 

 

 

 

 

 

 

코드를 수정한 뒤

explosion 효과를 Enemy에 적용해준다.

 

 

 

 

 

 

 

- 배경 추가

 

Asset Store에서 아래 보이는 배경을 다운로드 해준다.

 

 

 

 

 

사용할 배경 Asset을 넣어두기 위해 폴더를 하나 더 생성했다.

 

 

 

 

 

생성한 뒤 Material 을 추가하고 이름을 Mat_Background로 설정한다.

 

 

 

 

 

 

 

생성한 Material에 사용할 배경을 하나 선택하여 Albedo 체크박스에 마우스 드래그 & 드랍하여 적용시킨다.

 

 

 

 

 

 

 

다음으로는 [Hierarchy] - [3D Object] - [Quad] 를 생성하고 Background로 이름을 설정한다.

 

 

 

 

 

 

방금 만든 Background 오브젝트를 클릭하여

[Inspector] - [Materials] - [Element 0]에 Mat_Background (Materials)를 적용시킨다.

 

마지막으로는 [Transform] 에서 위치와 크기를 조정한다

 

 

 

 

 

적용하면 게임실행창에 다음과 같이 배경이 깔리게 된다.

 

 

 

 

 

 

 

별이 위에서 아래로 떨어지는 것처럼 보이게 해서 비행기가 이동하는 것처럼 보일 수 있도록 제작해 보자

 

먼저 C# 스크립트를 하나 더 생성하고 이름을 Background로 설정하고 Background 오브젝트에 드래그&드랍한다.

 

 

 

 

 

Background 스크립트는 다음과 같이 작성한다.

 

배경이 0.2속도로 위로 움직이게 된다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Background : MonoBehaviour
{
    public Material bgMaterial;

    public float scrollSpeed = 0.2f;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        Vector2 direction = Vector2.up;

        bgMaterial.mainTextureOffset += direction * scrollSpeed * Time.deltaTime;
    }
}

 

 

 

 

[Hierarchy] - [Background] - [Bg Material] 에 만들어 놓은 Mat_Background 를 적용시킨다.

 

 

 

 

 

 

- 사운드 추가

 

다음으로는 총알을 발사했을 때, 물체가 부딪쳤을 때 나는 효과음과 배경음악을 설정해볼것이다.

 

먼저 총알 발사 시 효과음을 설정해보도록하자.

 

[Inspector] - [Add Component] - [Audio Source] 를 클릭한다.

 

 

 

 

 

소리는 아무소리나 사용해도 좋다. 음성파일을 Asset에 그대로 마우스 드래그 & 드랍하면 다음과 같이 폴더가 생성되어 들어간다.

 

 

 

 

해당 파일 중 총알 발사 시 쓸 소리를 AudioClip 에 적용한다.

 

 

 

 

 

 

 

다음으로는 충돌 시 폭발음이 날 수 있도록 설정해보자.

 

이전과 마찬가지로 Add Component를 통해 Audio Source를 추가한다.

 

 

 

 

충돌 시 사용할 소리를 AudioClip에 적용시다

 

 

 

 

 

마지막으로 배경음을 적용해보자. 

 

Background 오브젝트에 Add Component해준다.

 

 

 

BGM으로 사용할 음악을 AudioClip에 적용한다.

 

 

 

 

 

 

위의 폴리싱과 효과들을 모두 적용한 결과이다.

 

 

 


 

배경이랑 노래도 까니까 진짜 게임같다.,. 재밌다. 이제 어느정도 게임의 구색이 갖추어진것처럼 보인다.

반응형