광산김가네

[모각코][Unity/유니티]0717 TIL_플랫포머 게임만들기(4)_ 공격 및 적 피격기능 구현 본문

TIL(Today I Learn)

[모각코][Unity/유니티]0717 TIL_플랫포머 게임만들기(4)_ 공격 및 적 피격기능 구현

어둠의 그림자 2021. 7. 19. 00:30

공격기능 

선택한 캐릭터 스프라이트에 원거리 공격애니메이션만 있어서 원거리 공격기능을 구현해봤다.

1)공격나가는 기능 구현(==총알..?)

https://www.youtube.com/watch?v=ggr_kKwr1OY&t=400s 

해당영상을 참고해서 구현해보았다.

Player에 새로운(Player Attack)스크립트에서는 Instantiate(stone,pos.position,transform.rotation); 로 stone과 pos를 public 변수로 선언해주었다.

(Stone(총알의 프리팹), pos(총알의 위치))

!) 이때 Stone에 "프리팹"을 넣어주어야한다 (<->스프라이트를 hierachy에 넣었다 다시 View로 넣어주면 프리팹이된다!)

!!) pos의 값인 StonePos는 Create Empty로 만든위치이다. Player 애니메이션에 맞춰서 위치설정해주면 된다

그다음 프리팹에 bullet 스크립트를 추가해주었다

bullet 스크립트에서는 bullet이 어디에(적,필드 등등) 부딫혔을때 소멸되는 기능이라던지,

transform.Translate(transform.right * speed * Time.deltaTime);

의 코드로 총알이 일직선으로 날아가는 기능을 추가해주었다.2) 적과 부딫혔을때의 반응(적 피격)적과 총알이 부딫혔을때 적이 죽는 기능을 넣어보려 한다.

먼저 raycast를 활용해서 적과 총알 부딫힘을 확인시킬수있도록 하였다.

더불어 총알이 맞으면 적 스프라이트가 소멸되어야 하므로, enemy 스크립트에 "HP 변수"를 추가하였다.

따라서, bullet 스크립트에서 명중되면 HP변수값을 0으로 설정해주고,

enemy 스크립트에서 HP값이 0이 된다면 오브젝트를 소멸시켜주도록!

<결과>

애니메이션 추가는 반복적으로 기재해서 관련부분 설명은 생략했다

[시간오래걸리거나 막힌부분]

1.  처음에 총알에 해당하는 이미지가 Game에서는 안보이는 Scene에서는 보였다

<- 프리팹의 위치에서 z좌표가 -1000이런식으로 설정되어있어서, maincamera보다 3차원측명에서 봤을때 뒤에있던것.

2. 다른스크립트에 있는 변수 불러오기

https://uheeworld.tistory.com/35

 

다른 스크립트의 변수 호출(다른 스크립트의 변수 가져오기)

CINPUTMOVEMENT 스크립트에 있는 _speed라는 변수를, C_StopManager라는 스크립트에서 사용하고 싶다면 어떻게 해야할까?  CintputMovement(원래 스크립트 이름) cinputmovement(인스턴스 이름)   = GameObje..

uheeworld.tistory.com

해당 블로그를 보고 해결했다

Enemy enemy = GameObject.Find("Enemy").GetComponent<Enemy>();

enemy.HP = 0;

이런식으로 쓰거나

 public GameManager gameManager; 이런식으로 쓰거나

3. Destroy 함수 does not exist in...

백퍼 Destory이런식으로 오타낸거..

 

[다음시간목표]

- 적 hp횟수 늘리기(여러번 때려야 죽을수있게)

- 적->플레이어도 공격기능 추가

- 그에따른 플레이어 hp 시각적으로 확인할수있는 기능+gameover기능 추가