개인개발기록/게임개발프로젝트

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 확인하기

 

미리 제거하여 이러한 사항은 발생하지 않았다