반응형
반응형
이번 포스팅에서는 저번 포스팅에 있던 문제점들을 해결하고자 한다.
2021.05.13 - [유니티] - 2D 총알구현,발사
저번 포스팅에서는 총알이 올바른 위치에 생성이 안되고 삭제가 안되는 문제점을 가지고 있었다.
우선 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 프리펩에 넣어주자
다음으로는 기존 발사함수를 살짝 변경해보자
기존 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로 기존에 캐릭터 아래에 생성되던 총알을 오른쪽위에 생성되게, 즉 겉으로는 총에서 나가는것처럼 보이게 바꾸어주었다.
이제 시현영상을 보도록 하자
참고로 왼쪽상단에 프레임을 나타내는 오브젝트를 추가했는데 이것은 나도 지인에게 받은거여서 뭐라 설명할 수가 없다 ㅠㅠ
댓글과 지적은 언제든지 환영입니다~!
반응형
'유니티' 카테고리의 다른 글
유니티 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 |