본문 바로가기

유니티

2D 총알삭제와 총알생성 위치 변경(Unity)

반응형
반응형

이번 포스팅에서는 저번 포스팅에 있던 문제점들을 해결하고자 한다.

2021.05.13 - [유니티] - 2D 총알구현,발사

 

2D 총알구현,발사

이번 포스팅에서는 총알을 구현하고 발사하는거 까지 해보겠다. 일단 본격적으로 스크립트를 수정하기에 앞서서 Edit->ProjectSettings->Input Manager에 들어가서 아래사진과 같이 Fire1버튼을 A로 설정해

red-tiger.tistory.com

 

저번 포스팅에서는 총알이 올바른 위치에 생성이 안되고 삭제가 안되는 문제점을 가지고 있었다.

우선 bullet 프리펩은 시야에서 안보이면 파괴하는 함수를 사용해서 삭제하겠다.

우선 bullet.cs를 아래와 같이 작성하자.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Bullet : MonoBehaviour
{
    // Start is called before the first frame update
    void OnBecameInvisible()//화면밖으로 나갈때
    {
        Destroy(this.gameObject);//총알 파괴
    }
}

  간단한 스크립트다. 이제 이 스크립트를 아래 사진과같이 bullet 프리펩에 넣어주자

component에 bullet.cs를 넣어주자

다음으로는 기존 발사함수를 살짝 변경해보자

기존 Player.cs 안의 void Fire()함수를 아래와 같이 작성하자

void Fire()//발사하는 함수
    {
        if(!Input.GetButton("Fire1"))//Fire버튼을 안누르면 종료
        {
            return;
        }
        if(curShotDelay<maxShotDelay)//장전시간이 충족이안되면
        {
            return;
        }
        GameObject bullet = Instantiate(bulletObj, transform.position+Vector3.right*2.0f+Vector3.up*1.0f, transform.rotation);
        //현재 위치보다 오른쪽위에 총알생성 
        Rigidbody2D rigid_bullet = bullet.GetComponent<Rigidbody2D>();
        rigid_bullet.AddForce(Vector2.right*15,ForceMode2D.Impulse);

        curShotDelay = 0;//꼭 초기화해줘야된다.
    }

 bullet을 생성할때 위치를 transform.position+Vector3.right*2.0f+Vector3.up*1.0f로 기존에 캐릭터 아래에 생성되던 총알을 오른쪽위에 생성되게, 즉 겉으로는 총에서 나가는것처럼 보이게 바꾸어주었다.

이제 시현영상을 보도록 하자

 

참고로 왼쪽상단에 프레임을 나타내는 오브젝트를 추가했는데 이것은 나도 지인에게 받은거여서 뭐라 설명할 수가 없다 ㅠㅠ

댓글과 지적은 언제든지 환영입니다~!

 

donaricano-btn글이 마음에 들었다면 왼쪽이미지를 눌러서 후원 부탁드립니다><

반응형

'유니티' 카테고리의 다른 글

유니티 il2cpp_cache 삭제해도 되는가??  (2) 2022.09.07
유니티 구글플레이 로그인 연동  (0) 2022.09.06
2D 배경음악 및 총알 효과음넣기  (0) 2021.05.24
2D 총알구현,발사  (0) 2021.05.13
2D 캐릭터 이동  (0) 2021.05.03