반응형


슬슬 어떤 코드에 대해서 올려야 하나 생각했는데 진행 중인 게임 개발에서 쓰이는 걸 필기하는 식으로 간간히 다루도록 할게요 !

그래서 오늘은 총알을 발사시키는 방법에 대해서 포스팅 하겠습니다 !




먼저 총알을 발사할 플레이어 오브젝트를 만들어둘게요 ! 검정색 큐브는 Capsule에 앞을 나타내주기 위해서 넣었습니다.

캐릭터를 움직이는 건 넣지 않을게요 :D


그리고 총알이 나가는 위치를 지정해주기 위해서 빈 Gameobject를 만들어서 'FirePos'라고 이름을 바꿔주고 적당히 위치를 조절해놨습니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Fire : MonoBehaviour {
 
    public GameObject Bullet;
    public Transform FirePos;
 
    void Update () {
        if (Input.GetMouseButtonDown (0))
        {
            //복제한다. //'Bullet'을 'FirePos.transform.position' 위치에 'FirePos.transform.rotation' 회전값으로.
            Instantiate(Bullet, FirePos.transform.position, FirePos.transform.rotation);
        }
    }
}
 
cs

그리고 스크립트를 하나 만들었어요. 발사되는 총알을 지정해주기 위해서 public GameObject Bullet; 을 선언해줬고 

발사되는 위치를 지정해주기위해

public Transform FirePos; 도 선언해주었습니다 !

그리고 마우스 좌측 버튼을 누를 때 마다 오브젝트가 복제되도록 짜주었습니다.

(설명은 주석에 넣었으니 따로 더 안쓸게요 !)



그리고 총알이 될 Sphere를 하나 만들어서 빨간색으로 바꿔주고 Prefab 시킵니다 ~

프리팹시키고 나서 씬뷰에 있는 bullet 오브젝트는 지워주세요 필요가 없어요 !

(Prefab은 원하는 오브젝트를 Hierachy창에서 Project창으로 드래그드랍 시키면 만들어 집니다 !)


1
2
3
4
5
6
7
8
9
10
11
12
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Bullet : MonoBehaviour {
 
    void Update () {
        //프레임마다 오브젝트를 로컬좌표상에서 앞으로 1의 힘만큼 날아가라
        transform.Translate(Vector3.forward * 1f);
    }
}
 
cs

그리고 스크립트를 하나 더 작성할게요 ~

(굳이 두개로 나눌 필요는 없지만 기능에 대해 설명하기 위해서는 나누는게 좋을 것 같아서 일부러 나눴습니다.)


이제 밖으로 나와서 총을 쏘는 대상이 될 Capsule 오브젝트에 Fire 스크립트를 추가시켜주고 bullet에는 Prefab화 시킨 bullet을, Fire Pos에는 Capsule 자식 오브젝트로 만들었던 FirePos를 넣어주면 됩니다.


그리고 bullet 프리팹에도 bullet 스크립트를 추가시켜주세요 ~

(프리팹으로 만들기 전에 넣었으면 됐을 것을 까먹었습니다 하핫☆)


문제없이 따라했다면 실행시켜서 확인해봅시다 ~

마우스 좌측 클릭을 누르면 총알이 앞으로 날아가는 걸 볼 수 있습니다 !

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기