-
Parrying Sword #43 : [아트][개발][프로그래밍] Observer, 화염탄 날리는 눈알, 파이어구미 투명도 낮춤유니티 게임 개발/메인 프로젝트: Parrying Sowrd 2024. 1. 3. 21:42
다섯개의 눈알이 있고, 범위 내에 있으면 플레이어 방향으로 화염탄을 날립니다.
public void fire() { if (!activeSts) return; if (!fireSphere) return; for (int i = 0; i < muzzleLength; i++) { go[i] = Instantiate(fireSphere, muzzles[i].transform.position, Quaternion.identity); Invoke("track", 1.0f); Destroy(go[i], 5.0f); } } private void track() { if (muzzleLength == 0) return; for (int i = 0; i < muzzleLength; i++) { float distanceX = player.transform.position.x - go[i].transform.position.x; float distanceY = player.transform.position.y - go[i].transform.position.y; float distance = Mathf.Sqrt(distanceX * distanceX + distanceY + distanceY); // 방향만 필요하니까 정규화 해야됨 Vector2 vector = new Vector2(distanceX / distance, distanceY / distance); rb = go[i].GetComponent<Rigidbody2D>(); rb.velocity = new Vector2(vector.x * fireSpeed, vector.y * fireSpeed); } }
시간차를 두고, 플레이어를 향해 발사한다. 이것이 기본 시스템입니다.
저 fire 메소드를 애니메이션 이벤트로 발동하는 방식이고,
activeSts가 지정한 트리거형 BoxCollider2D 밖에 있으면 false로 되어있게 하여
멀리 있을 경우의 발동을 제한하였습니다.
플레이어와 각 화염탄의 위치를 기반으로 벡터를 만들고, 방향만 필요한 것이니 정규화한 다음
필요한 만큼 빠르기를 조절할 수 있도록 설계하였습니다.
화산에 어떤 생명체가 살까 하면 이미지가 잘 떠오르지 않습니다.
결국 노트에 남는 건 뭔가 기괴하게 생긴 디자인 뿐이라 아쉽습니다.
아마 다음 몬스터도 기괴할 것 같습니다.
파이어구미는 구미, 젤리답게 투명도를 조금 낮췄습니다.
뭔가 마음에 안든다 싶었는데 이러니 보기가 낫습니다.
'유니티 게임 개발 > 메인 프로젝트: Parrying Sowrd' 카테고리의 다른 글
Parrying Sword #45 : [잡담] 패드 연결에 대해서 + 게임 개발 이야기 (0) 2024.01.06 Parrying Sword #44 [아트][개발][프로그래밍] 토르소, 화산의 몬스터 (0) 2024.01.05 Parrying Sword #42 : [아트][개발] FireGummy, 화염방사 젤리 (0) 2023.12.30 Parrying Sword #41 : [아트][개발] 마그마 슬라임 (0) 2023.12.29 Parrying Sword #40 : [개발] 스테이지 간 연결, 데카시스 수정 (0) 2023.12.25