개인개발기록/게임개발프로젝트
2025_04_17_플랫포머_게임개발_연습_프로젝트
pop2bubbledev
2025. 4. 17. 22:19
#오늘 한 작업
Unity3D 아이템 획득 && 공전물 만들기
오늘은 아이템을 입수하는 과정을 만들었다
플레이어아 아이템의 Trigger 와 충돌하면 그것의 tag가 Item 인지 식별후 GameObject를 파괴한다
private void OnTriggerEnter(Collider other)
{
if(other.tag == "Item")
{
Item item = other.GetComponent<Item>();
switch (item.type)
|
|
|
|
|
Destroy(other.gameObject);
아이템 획득 모습
브론즈 코인(5) && 골드코인(50) 을 먹어 coin의 값이 55 증가한 모습
Ammo 를 먹자 Ammo의 값이 30으로 증가한다
이는 각 아이템을 Enum 형식으로 담아 각자가 가진 value 의 값 만큼 증감시켜주는것으로
Max값을 설정해 특정 이상의 값을 얻을수 없도록 하였다
ammo += item.value;
if (ammo > maxAmmo)
ammo = maxAmmo;
또한 플레이어를 공정하는 수류탄 (필살기 아이템) 을 만들었다
획득시 플레이어 주변을 공전하며 최대 4개까지 들수있다
움직이면 파티클이 나오는 모습
관련 코드는 아래와 같다
void Start()
{
offset = transform.position - target.position; //현재 위치 = 스크립트를 가진 물체의 position - 타겟(플레이어) 의 position
}
void Update()
{
transform.position = target.position + offset; //스크립트를 가진 오브젝트의 위치 = 타겟(플레이어) 의 위치 + 초기 멀어진 거리
transform.RotateAround(target.position, Vector3.up, orbitSpeed * Time.deltaTime); //빙빙 돌아라 타겟포지션을 중심으로 , Y축 기준, 공전속도 * deletaTime 으로
offset = transform.position - target.position; // 플레이어가 움직여도 업데이트
}
주석으로도 적혀있듯 초기 위치를 설정하고 Update를 통하여 불러온다
여기서 RotateAround 는 Unity 내장함수로 ( 중심점 , 중심축 , 속도) 를 기준으로 돈다
#작업중 변경(수정) 사항
해당없음
#예상시간/실제시간
1시간 / 1시간30분
#작업중 애로사항
해당없음
#예상되는 애로사항
해당 없음
#지난주 애로사항
다음 강의는 아이템획득 과 캐릭터 기반 공전시키기이다
오늘 있었던 애로사항과 동일하게 Rigidbody를 가진 공전물이 Player 와 충돌하여 날아가는사항
(항상 Prefab 사용시 Rigidbody 와 Collider 확인하기
미리 제거하여 이러한 사항은 발생하지 않았다