아래영상 참고
https://www.youtube.com/watch?v=epZFE5Hpbdc&list=PLO-mt5Iu5TeZGR_y6mHmTWyo0RyGgO0N_&index=7&t=40s
- 함정(가시)추가
1) tilepallete에 가시이미지 추가 (Window-2D-Tile Pallete)
2) 새로운 타일 맵 추가후 가시이미지 배치, 레이어/태그 'Enemy'추가.
3) Edit-Project Setting-Physics 2D에서 충돌 무시할 레이어 체크
- Enemy:Enemy 사이는 충돌 무시
- PlayerDameaged(무적상태) : Enmey 사이 충돌 무시
- 충돌 이벤트 설정
1) 객체간 충돌은 OnCollisionEnter2D 콜백함수를 이용.
void OnCollisionEnter2D(Collision2D collision)
{
Debug.Log("맞음");
if (collision.gameObject.tag == "Enemy")
{
OnDamaged(collision.transform.position);
}
}
void OnDamaged(Vector2 vec)
{
gameObject.layer = 9;
Debug.Log("맞음");
spriteRenderer.color = new Color(1, 1, 1, 0.4f);
int dirc = transform.position.x - vec.x > 0 ? 1 : -1;
rigid.AddForce(new Vector2(dirc, 1)*7, ForceMode2D.Impulse);
//Animation
animator.SetTrigger("doDamaged");
Invoke("OffDamaged", 3);
}
void OffDamaged()
{
gameObject.layer = 10;
spriteRenderer.color = new Color(1, 1, 1, 1);
}
1) Player:Enemy 충돌 발생시 AddForce를 통해 뒤로 밀어내기, Color alpha값으로 충돌 피드백 주기, PlayerDamaged(무적)상태 만들기
2) Invoke()함수로 3초 뒤 원 상태로 돌리기
3) SetTrigger를 통해 애니메이션 트리거 시키기
- 충돌시 애니메이션 설정
1) Any State, 어떤 상태에서든 동작
2) PlayerDamaged 상태로 변경. doDamaged란 트리거를 추가해서 발동시키기.
'+' ->'Trigger'로 추가하기. doDamaged로 설정
3) AnyState->PlayerDamaged사이의 연결선 컨디션을 아래와 같이 Trigger가 발동할 때로 설정하면 됨.
4) PlayerDamaged->Exit 사이 연결선은 아무 설정도 안하기
- 이렇게 두면 PlayerDamaged 애니메이션이 종료되면 자동으로 Exit로 변경된다. 단, PlayerDamaged의 애니메이션 loop설정을 해제할 것.
여기까지 완성!
'Software Development > Unity' 카테고리의 다른 글
유니티 3D 간보기 - 골드메탈 3D강좌:플레이어 컨트롤 (0) | 2022.02.05 |
---|---|
유니티 간보기 - 골드메탈 2D 따라하기_마지막 강의 (0) | 2022.02.05 |
유니티 간보기 - 골드메탈 2D 따라하기_몬스터기초 AI (0) | 2022.02.04 |
유니티 간보기 - 골드메탈 2D 따라하기_타일맵 (0) | 2022.02.04 |
유니티 간보기 - 골드메탈 2D 게임 따라하며 유니티 기초 익히기 (0) | 2022.02.04 |