• 티스토리 홈
  • 프로필사진
    SiJun-Park
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
SiJun-Park
  • 프로필사진
    SiJun-Park
    • 분류 전체보기 (121)
      • Unity (80)
        • RPG Project (39)
        • FPS Project (30)
        • 기타 - 개발 (11)
      • 개발 (35)
        • 임베디드 소프트웨어 (7)
        • 컴파일러 (6)
        • 기계학습 (8)
        • 보안 (8)
        • 그래픽스 (2)
        • 그 외 (4)
      • 코딩문제 (5)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • FPS Project - 2 [ 사격 ]
        2025년 04월 03일
        • SiJun-Park
        • 작성자
        • 2025.04.03.:13

        FPS Project - 2에서는 실제로 총알이 발사가 되는 것을 구현을 목표로 하였습니다.

         

        Bullet

        간단하게 총알 Prefab을 구현을 하였습니다.

         

            private void Update() => transform.Translate(Vector3.forward * Speed * Time.deltaTime);

        총알에 스크립트는 위와 같이 앞으로 나가도록 코드를 작성을 해주었습니다.

         

            public void OnShoot()
            {
                if (Time.time > NextShootTime)
                {
                    NextShootTime = Time.time + (ShootTime/1000f);
        
                    MuzzleEffect.SetActive(false);
                    MuzzleEffect.SetActive(true);
        
                    Vector3 spawnPos = CameraTransform.position + CameraTransform.forward * 0.15f;
                    BulletManager bullet = Instantiate(Bullet, spawnPos, Quaternion.identity);
                    bullet.gameObject.SetActive(true);
                    bullet.transform.forward = CameraTransform.forward;// 앞쪽
                    bullet.SetSpeed(ShootSpeed);
                    Destroy(bullet.gameObject, 2f);
                }
            }

        총알을 만들었으니 총도 스크립트를 만들어 줘야하니 위와 같이 작성을 해주었습니다.

         

        현재 시간이 내가 기록한 발사할 다음 시간보다 크다면 발사가 되게 하였습니다.

         

        그 다음으로 총알이 생성 될 위치를 화면 가운대로 잡았습니다.

         

        원래는 총에서 발사해서 중앙으로 날라가게 하려고 하였으나, 총알에서 카메라의 중앙값을 가져오고 거기에 대해 이동을 시키려니 너무 많은 연산이 필요가 할 것 같아,머즐에서 발사한 효과가 나오게 하고 총알은 중앙에서 나오도록 하였습니다. 

         

         

        이때 총알이 지속적으로 화면 가운대에서 보이면 보기 안좋으니 Camera에서 해당 총알 Layer를 무시 해주었습니다.

         

        그 이후에 생성된 총알은 2초가 지나면 자동으로 파괴가 되게 하였습니다.

         

            public void OnKeyUpdate(bool aiming, Equipment equipment)
            {
                if (aiming == false) { CrossHair.SetActive(false); return; }
                CrossHair.SetActive(true);
                if (Input.GetKey(KeyCode.Mouse0) && equipment.CheckWeapon())
                {
                    equipment.CheckWeapon().GetComponent<Gun>().OnShoot();
                }
            }

         

        그래서 이전과 합쳐서 만약에 착용한 아이템이 있다면, 그 총에서 설정한 값을 이용해 발사가 되게 구현을 하였습니다.

         

         

         

         

        결과

         

        'Unity > FPS Project' 카테고리의 다른 글

        FPS Project - 6 [ 장전 ]  (0) 2025.04.08
        FPS Project - 5 [ 몬스터 이동 및 공격 ]  (0) 2025.04.06
        FPS Project - 4 [ 데미지2 ]  (0) 2025.04.05
        FPS Project - 3 [ 데미지 ]  (0) 2025.04.04
        FPS Project - 1 [ 이동, 조준 ]  (0) 2025.03.31
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바