[유니티]탑다운 슈팅 따라하기 #17 무기 교체
- 게임 개발 - Unity3d
- 2020. 4. 11. 23:38
안녕하세요 유랑입니다.
실력향상을 위해서 오늘은 유튜브를 따라하면서 공부하겠습니다.
궁금하신점 있으시다면 댓글로 남겨주세요^^
1. 탑다운 슈팅 따라하기
이번 강의는 Sebastian Lague님께서 만든 예제이며,
유튜브를 보시면 자세한 내용을 배우실 수 있습니다.
유튜브 사이트 => 유튜브
2. 무기 교체
이번 시간에는 무기 교체 시스템을 만들어 보겠습니다.
무기 교체라지만 쏘는 방식만 우선 구성하겠습니다.
2-1) 무기 교체 시스템 -㉠Gun 스크립트 작성
Gun 스크립트에서는 총의 모드 즉 자동, 버스트, 단발 이렇게 모드를 추가해주겠습니다.
마우스 버튼을 누르고 있는지 여부도 판별해줄게요^^
using UnityEngine;
using System.Collections;
// 총에 해당
public class Gun : MonoBehaviour
{
// 발사 모드
public enum FireMode { Auto, Burst, Single };
public FireMode fireMode;
public Transform[] projectileSpawn; // 발사 위치
public Projectile projectile; // 총알
public float msBetweenShots = 100; // 연사 간격
public float muzzleVelocity = 35; // 총알 속도
public int burstCount; // 버스트 횟수
public Transform shell; // 탄피
public Transform shellEjection; // 탄피 생성위치
MuzzleFlash muzzleflash; // 머즐플래쉬효과
float nextShotTime;
bool triggerReleasedSinceLastShot; // 총알발사 가능여부
int shotsRemainingInBurst; // 남아있는 버스트 횟수
void Start()
{
muzzleflash = GetComponent<MuzzleFlash>();
shotsRemainingInBurst = burstCount;
}
void Shoot()
{
if (Time.time > nextShotTime)
{
// 버스트 모드
if (fireMode == FireMode.Burst)
{
if (shotsRemainingInBurst == 0)
{
return;
}
shotsRemainingInBurst--;
}
// 싱글 모드
else if (fireMode == FireMode.Single)
{
if (!triggerReleasedSinceLastShot)
{
return;
}
}
// 총알 생성
for (int i = 0; i < projectileSpawn.Length; i++)
{
nextShotTime = Time.time + msBetweenShots / 1000;
Projectile newProjectile = Instantiate(projectile, projectileSpawn[i].position, projectileSpawn[i].rotation);
newProjectile.SetSpeed(muzzleVelocity);
}
Instantiate(shell, shellEjection.position, shellEjection.rotation); // 탄피 생성
muzzleflash.Activate(); // 머즐플래쉬 효과
}
}
// 마우스 버튼을 누르고 있을 때
public void OnTriggerHold()
{
Shoot();
triggerReleasedSinceLastShot = false;
}
// 마우스 버튼을 땠을 때
public void OnTriggerRelease()
{
triggerReleasedSinceLastShot = true;
shotsRemainingInBurst = burstCount;
}
}
2-2) 무기 교체 시스템 -㉡GunController 스크립트 작성
GunController 스크립트에서는 총알을 발사했는지 여부에 대한 메소드를 추가해 주겠습니다.
여기서 총을 관리해 주는것이죠.
2-3) 무기 교체 시스템 -㉢Player 스크립트 작성
결국 Player 스크립트에서 마우스 입력여부에 따른 총알 발사를 제어합니다.
2-4) 무기 교체 시스템 -㉣스크립트 적용
총알은 이제 두 곳에서 나옵니다.
ProjectileSpawn을 복사하여 하나는 좌측방향
또 다른 하나는 우측방향을 바라보게 구성합니다.
이제 스크립트 컴포넌트에 해당 내용을 적용하고
적이 바로 죽을 수 있도록 체력도 수정하고
게임을 시작하여 발사해 봅니다.
발사발사!!
샷건같네요ㅎㅎ
2-5) 총알 효과 -㉠Trail Renderer
총알이 날아갈 때 효과를 주면 좋겠죠?
Trail Renderer컴포넌트를 추가해줄게요.
0.02초 동안 다음과 같은 곡선을 토대로 생겨났다가 없어집니다.
여기에다가 적용해줄 머티리얼은 이렇게 생성하고,
쉐이더는 파티클용으로 적용해 줄게요.
Color는 투명도만 쓰무스하게 줄어줄도록 구성해줍니다.
2-6) 총알 효과 -㉡Projectile 스크립트 작성
Projectile 스크립트에서 트레일렌더러 컬러를 변경가능하게 만들어 줄게요.
원하는 컬러값으로 바꾸시고
마구마구 쏘세요.
이번에는 자동으로 변경한 뒤 사격합니다.
멋져요ㅎㅎ
3. 마무리
오늘 강의는 여기까지입니다.
탑다운 슈팅을 따라하면서 무기 교체 시스템을 만들어 보았습니다.
감사합니다.
수업자료: 탑다운 슈팅 따라하기 #17 무기 교체