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