슬슬 어떤 코드에 대해서 올려야 하나 생각했는데 진행 중인 게임 개발에서 쓰이는 걸 필기하는 식으로 간간히 다루도록 할게요 !
그래서 오늘은 총알을 발사시키는 방법에 대해서 포스팅 하겠습니다 !
먼저 총알을 발사할 플레이어 오브젝트를 만들어둘게요 ! 검정색 큐브는 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 스크립트를 추가시켜주세요 ~
(프리팹으로 만들기 전에 넣었으면 됐을 것을 까먹었습니다 하핫☆)
문제없이 따라했다면 실행시켜서 확인해봅시다 ~
마우스 좌측 클릭을 누르면 총알이 앞으로 날아가는 걸 볼 수 있습니다 !
'Unity (C#) > Old' 카테고리의 다른 글
유니티 캐릭터 점프 기능 만들기 (0) | 2018.10.24 |
---|---|
유니티 플레이어를 따라다니는 카메라 만들기 (3인칭 시점 카메라) (2) | 2018.10.15 |
유니티 일시정지 기능 만들기 (0) | 2018.10.04 |
유니티 Nav Mesh Agent 이용해서 AI 만들기 (플레이어 따라다니는 적) (3) | 2018.10.02 |
유니티 스킬 쿨타임 표시 구현하기 (3) | 2018.08.26 |
최근댓글