본문 바로가기

Photon

Photon 셋째 날(PlayerFire , PlayerMove.OnDamage())

목차


Ray 로 총알 발사하기 (PlayerFire)

PlayerFire 스크립트 생성
한글로 쓴 상태

 

우리가 원래 3D FPS 할 때는,

그냥 맵에다가 올려놓고 했는데 

이번에는 쏠 때마다 만들거임

 

왜? MultiPlay 할거니까

사람들이 하나를 다 사용하면 이상하게 됨!

 

좀 더 최적화 하고싶으면, 들어온 인원수만큼 맵에 생성하게 하면 됨!

근데 우리는 쏠 때마다 만들어보자

왼쪽 컨트롤키를 누르면, 

 

파티클과 Audio 를 PlayOnAwake 까지 하면 만들자마자 생성됨

 

하지만 nomal 로 만들고 만들어진게 안없어지니까, 

Destroy 까지 하게 하자

 


진짜 총알 발사하기

 

위에꺼를 FireRay() 라고 만들어서 Update 에 정리하고,

Alt 키 누르면 총알 나가게 해보자.

 

총알 생성

리지드 바디 추가!!

 

여기 큐브에 Trigger 추가!
Bullet 스크립트 작성

Bullet 스크립트도 만들어 주자!

우리가 다 했던거임

PlayerFire 에 Assign 잘 해주고

 

 

총구를 다시 한번 정리해주자. 지금은  Main Camera 에 되어있음..

    public GameObject bulletFactory;

    public GameObject bulletImpactFactory;

    public Transform firePos;
    // Update is called once per frame
    void Update()
    {
        //1. 왼쪽 컨트롤키 누르면
        if (Input.GetKeyDown(KeyCode.LeftControl))
        {
            FireRay();
        }

        //1. 왼쪽 알트키를 누르면
        if (Input.GetKeyDown(KeyCode.LeftAlt))
        {
            //2. 총알공장 총알 만든다.
            GameObject bullet = Instantiate(bulletFactory);
            //3. 총구에 위치 시킨다.
            bullet.transform.position = firePos.position;
            //4. 총알의 앞방향을 총구방향으로 한다
            bullet.transform.forward = firePos.forward; 
        }
    }

FirePos 추가하고, 

총구에 위치 시키는거랑, 총구방향에 수정해줌!

 

Fire Pos 를 CamPos 를 넣자!

이제 머리 위에서 부딪히지는 않을거임

 

굿!


플레이어 HP 추가 (PlayerMove)

 

 PlayerMove 에서,

체력 세팅
start 에 넣어봄!

그럼 이게 언제 호출 되야 해?

 

Ray 를 쏘고, 효과 주고,

만약에 쐈을 때, 누가 맞으면 맞은애 한테 PlayerMove 를 들고와서 함수 실행 시키면 됨 

 

Player 를 복제 해보자

지금 Player(1) 에 카메라가 또있음

이러면 안되니까 이 CamPos 를 끄자

상대방의 CamPos 를 꺼버린 모습

 

그리고 쏴보면, 체력이 달아서 상대방이 죽는걸 확인 할 수 있음ㅎ