일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 차이
- 배열
- 피라미드 출력
- 잡다한 일
- 논리 연산
- 5073번
- 백준 9506번
- 직각 삼각형
- 백준 5086번
- 백준 1269번
- 일상생활 영어표현
- 백준 2525번
- 해석
- Java
- 백준 2501번
- javascript
- C++
- 백준 5597번
- 백준 27433번
- 상세 풀이
- Unity
- 백준 2587번
- 백준 #11382번 #
- 알고리즘
- 대칭 차집합
- 백준 1157번
- html
- C
- 백준 25305번
- 연속된 숫자의 합
- Today
- Total
YunDev
Unity - 슈팅 게임 플레이어 무적 알아보기! 본문
오늘부터 슈팅게임에서 각 기능의 코드에 대해서 글을 올리도록 하겠습니다!
첫번째로는 플레이어의 무적에 대해서 알아보도록 하겠습니다.
플레이어가 적에게 닿거나 총알에 닿으면 비활성화가 되는데
else if (collision.gameObject.tag == "Enemy" || collision.gameObject.tag == "EnemyBullet") //에너미는 적, 에너미불렛은 총알
{
if (isRespawnTime) //무적 시간이면 적에게 맞지 않음
return;
if (isHit) //이미 맞은상태에서 바로 맞으면 적에게 맞지 않음,중복 시 라이프가 한번에 없어지기 때문
return;
isHit = true;
life--;
gameManager.UpdateLifeIcon(life);
gameManager.CallExplosion(transform.position, "P");
if (life == 0)
{
gameManager.GameOver();
gameObject.SetActive(false);
}
else {
gameManager.RespawnPlayer();
}
gameObject.SetActive(false);
collision.gameObject.SetActive(false);
}
ㄹㅇㄹ
주석과 SetActive만 보시면 됩니다. SetActive가 비활성화이고 플레이어, 플레이어가 맞은 적이나 총알도 같이 비활성화를 한다는 뜻입니다.
그렇게 비활성화가 되면 다시 RespawnPlayer함수를 통해 활성화가 되고 잠시동안 무적이 되게 하는데
그게 바로 오늘 배울 코드입니다!
public bool isRespawnTime; //bool 타입 변수 선언
void Awake()
{
SpriteRenderer spriteRenderer = GetComponent<SpriteRenderer>(); //색깔을 바꾸기 때문에 변수 선언 필요
}
void OnEnable()
{
Unbeatable();
Invoke("Unbeatable", 3);
}
void Unbeatable()
{
isRespawnTime = !isRespawnTime;
if (isRespawnTime) //무적 타임 이펙트 (투명)
{
spriteRenderer.color = new Color(1, 1, 1, 0.5f);
}
else {
spriteRenderer.color = new Color(1, 1, 1, 1); //무적 타임 종료(원래대로)
}
}
OnEnable은 플레이어가 활성화 될 때 실행되는 함수입니다. 플레이어는 비활성화 후 활성화가 된다고 했죠? Unbeatable함수는 활성화가 되자마자 isRespawnTime 변수(기본적으로 false)를 true로 바꿔줍니다.
isRespawnTime이 true라면 new Color를 통해서 투명하게 바꿔주고 3초뒤에 Invoke를 통해 다시
Unbeatable 함수를 실행합니다. 그러면 지금 리스폰 변수는 true이고 false로 바꿔주기 때문에
색이 다시 원래대로 돌아옵니다. (네번째 수가 투명도입니다.)
이 과정이 있기 때문에 부활 후 투명해지고 3초뒤에 다시 돌아오는 것이죠.
물론 if (isRespawnTime) 이 로직이 있어야 무적이됩니다.
return;
이렇게 오늘은 유니티 총게임에서 플레이어 무적기능 코드에 대해 알아보았습니다 감사합니다~~
'Programming > Unity' 카테고리의 다른 글
Unity - 2D 마리오 게임 완성했습니다!! (기초) (3) | 2020.04.12 |
---|---|
Unity - 플레이어 총알 발사 구현하기! (0) | 2020.04.01 |
Unity - 슈팅게임 완성했습니다! (4) | 2020.03.29 |
Unity - 기초적인 실행 함수, 프레임 (0) | 2020.03.10 |
Unity - 2D 적 A.I 구현하기 (1) | 2020.03.09 |