[유니티]탑다운 슈팅 따라하기 #16 무기 이펙트

안녕하세요 유랑입니다.

 

 

실력향상을 위해서 오늘은 유튜브를 따라하면서 공부하겠습니다.

궁금하신점 있으시다면 댓글로 남겨주세요^^

 

 

 

1. 탑다운 슈팅 따라하기

 

 

이번 강의는 Sebastian Lague님께서 만든 예제이며,

유튜브를 보시면 자세한 내용을 배우실 수 있습니다.

 

유튜브 사이트 => 유튜브 

 

 

 

유니티 슈팅

 

 

 

2. 무기 이펙트

 

 

이번 시간에는 무기 이펙트를 만들어 보겠습니다.

총알을 발사할 때 탄피나 플래쉬 효과 등을 적용해 볼게요.

 

 

 

유니티 슈팅

 

 

 

2-1) 탄피 효과 만들기 -㉠탄피 생성

 

 

우선 총을 하이라키뷰에 옮겨주세요.

 

 

 

유니티 슈팅

 

 

빈 오브젝트를 만들어 이름을 "Shell ejection point"라고 변경해 줍니다.

이제 여기서 탄피가 나오도록 구현해 줄게요.

 

 

유니티 슈팅

 

 

추가된 부분은 꼭 Aplly All을 클릭해 프리팹에 적용해 주세요!!

 

 

유니티 슈팅

 

 

Bullet 프리팹을 이용해 Shell을 만들어 주겠습니다.

생성한 후 이름을 "Shell" 변경해 주세요.

이 때 서로 중복되지 않도록 UnPrefab을 꼭 해주세요.

 

 

유니티 슈팅

 

 

Shell에는 해당 머티리얼을 적용해 줄텐데요.

Rendering Mode를 Fade로 변경함으로써 점점사라지는 효과를 줄거에요ㅎㅎ

 

 

유니티 슈팅

 

 

그리고 머티리얼과 리지드바디, 콜라이더까지 적용해 줍니다.

충돌처리를 위해서에요.

 

 

유니티 슈팅

 

 

만들어진 쉘은 프리팹으로 만들어 주겠습니다.

 

 

유니티 슈팅

 

 

 

2-2) 탄피 효과 만들기 -㉡Shell 스크립트 작성

 

 

Shell 스크립트를 작성해 주겠습니다.

물리효과를 이용해 튀어나가는 부분과

Fade처리를 이용해 자연스럽게 사라지도록 구현하였습니다.

 

 

using UnityEngine;
using System.Collections;

public class Shell : MonoBehaviour
{
    public Rigidbody myRigidbody;
    public float forceMin; // 최소힘
    public float forceMax; // 최대힘

    float lifetime = 4; // 생존시간
    float fadetime = 2; // 페이드시간

    void Start()
    {
        float force = Random.Range(forceMin, forceMax);
        myRigidbody.AddForce(transform.right * force);
        myRigidbody.AddTorque(Random.insideUnitSphere * force);

        StartCoroutine(Fade());
    }
    // 페이드 효과
    IEnumerator Fade()
    {
        yield return new WaitForSeconds(lifetime);

        float percent = 0;
        float fadeSpeed = 1 / fadetime;
        Material mat = GetComponent<Renderer>().material;
        Color initialColour = mat.color;

        while (percent < 1)
        {
            percent += Time.deltaTime * fadeSpeed;
            mat.color = Color.Lerp(initialColour, Color.clear, percent);
            yield return null;
        }

        Destroy(gameObject);
    }
}

 

 

만든 스크립트는 Shell 프리팹에 적용 후 다음과 같이 설정해 주세요.

 

 

유니티 슈팅

 

 

 

2-3) 머즐 플래시 효과 만들기 -㉠머즐 플래시 생성

 

 

이번에는 Muzlleflash 효과를 만들어 볼게요.

해당 스프라이트를 우선 잘라주겠습니다.

Sprite Editor를 클릭해 주세요.

Muzzleflash.zip
다운로드

 

 

 

유니티 슈팅

 

 

2019버전부터는 이렇게 패키지를 따로받아주셔야 해당 에디터 사용이 가능합니다.

 

 

유니티 슈팅

 

 

Slice를 이용해 400 x 200 사이즈로 잘라주세요.

적용되었으면 Apply까지 눌러줍니다.

 

 

유니티 슈팅

 

 

나눠진 이미지들은 Muzzleflash에다가 넣어줍니다.

Muzzleflash는 빈오브젝트이며 위치와 회전값은 0입니다.

 

 

유니티 슈팅

 

 

 

2-4) 머즐 플래시 효과 만들기 -㉡머즐 플래시 형태 잡아주기

 

 

이제 다음과 같은 형태가 나오도록 위치를 수정하겠습니다.

 

 

 

유니티 슈팅

 

 

스케일 값도 조정하고

 

 

유니티 슈팅

 

 

머즐플래시 이미지 트랜스폼값은 다음과 같습니다^^

 

 

유니티 슈팅

 

 

유니티 슈팅

 

 

 

2-5) 머즐 플래시 효과 만들기 -㉢MuzzleFlash 스크립트 작성

 

 

MuzzleFlash 스크립트를 작성해 주겠습니다.

머즐 플래쉬 이미지들을 이용해 플래쉬 효과를 만들어 줍니다.

 

 

using UnityEngine;
using System.Collections;

public class MuzzleFlash : MonoBehaviour
{
    public GameObject flashHolder; // 머즐 플래쉬
    public Sprite[] flashSprites; // 플래쉬 스프라이트
    public SpriteRenderer[] spriteRenderers;

    public float flashTime; // 플래쉬 시간

    void Start()
    {
        Deactivate();
    }
    // 플래시 효과
    public void Activate()
    {
        flashHolder.SetActive(true);

        int flashSpriteIndex = Random.Range(0, flashSprites.Length);
        for (int i = 0; i < spriteRenderers.Length; i++)
        {
            spriteRenderers[i].sprite = flashSprites[flashSpriteIndex];
        }

        Invoke("Deactivate", flashTime);
    }

    void Deactivate()
    {
        flashHolder.SetActive(false);
    }
}

 

 

 

2-6) 머즐 플래시 효과 만들기 -㉣Gun 스크립트 작성

 

 

Gun 스크립트에서 MuzzleFlash 기능을 제어해줄텐데요.

탄피가 나오고 플래쉬 효과가 나오도록 순서대로 적용해 줄게요.

 

 

using UnityEngine;
using System.Collections;

// 총에 해당
public class Gun : MonoBehaviour
{
    public Transform muzzle;
    public Projectile projectile;
    public float msBetweenShots = 100;
    public float muzzleVelocity = 35;

    public Transform shell;
    public Transform shellEjection;
    MuzzleFlash muzzleflash;
    float nextShotTime;

    void Start()
    {
        muzzleflash = GetComponent<MuzzleFlash>();
    }

    public void Shoot()
    {
        if(Time.time > nextShotTime)
        {
            nextShotTime = Time.time + msBetweenShots / 1000;
            Projectile newProjectile = Instantiate(projectile, muzzle.position, muzzle.rotation);
            newProjectile.SetSpeed(muzzleVelocity);

            Instantiate(shell, shellEjection.position, shellEjection.rotation);
            muzzleflash.Activate();
        }
    }
}

 

 

작성한 스크립트는 Gun 프리팹에 적용해주고

설정은 다음과 같습니다.

 

 

유니티 슈팅

 

 

총알이 생성될 때 라이트 효과도 있어야겠죠?!

Light을 생성하여 해당 부분에 넣어줍니다.

범위와 밝기도 다음과 같이 설정해 줄게요~~

 

 

유니티 슈팅

 

 

 

2-7) 머즐 플래시 효과 만들기 -㉤추가 설정들

 

 

탄피에 지나친 물리효과는 필요없을거에요.

우선 레이어를 "Shell"로 설정해 주고

 

 

 

유니티 슈팅

 

 

Edit => ProjectSetting => Physics에서 Shell에 관련된 물리설정을 언체크해주세요.

물론 적과 장애물은 빼고 부탁드립니다.

 

 

유니티 슈팅

 

 

샤샤샷. FPS 형태로 잡아가고있네요.

 

 

유니티 슈팅

 

 

 

3. 마무리

 

 

오늘 강의는 여기까지입니다.

탑다운 슈팅을 따라하면서 무기 이펙트를 만들어 보았습니다.

감사합니다.

 

 

 

수업자료: 탑다운 슈팅 따라하기 #16 무기 이펙트

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

댓글

Designed by JB FACTORY