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

2025_04_11_플랫포머_게임개발_연습_프로젝트

pop2bubbledev 2025. 4. 12. 00:48

#오늘 한 작업

Unity 3D

각종 무기 && 코인 && 아이템

 

각종 아이템 && 파티클 설정

플레이어 기준 우측이 3개의 무기 좌측이 3개의 아이템이며 정면엔 코인이있다

파티클에는 정말 많은 기능이 있다.


https://docs.unity3d.com/kr/530/Manual/PartSysMainModule.html

 

기본 PraticleSystem 의 컴포넌트

처음 PraticleSystem을 만들면 아래 스크린샷과 같이 보인다

우선 파티클이 Magenta 색으로 나오는데 이것은 Unity에서 Render 하는 값이 없으면 적용되는Margenta 색상 스프라이트 이다

파티클로써 역할을 하기위해 가장 기본적으로 보이는것부터 설정하면

Start Lifetime : 파티클이 살아있는 시간 

Start Speed   : 파티클의 속도

또한 우측에 펼쳐볼수 있는 메뉴가 있다

메뉴를 펼쳐주면 Constant 와 Curve 각 랜덤이 있는데

Constant 는 고정된 값 Curve 는 시간에따라 변하는값으로 그래프화 해서 설정할수있다

이번 개발에서는 Random Between Two Constants를 사용하겠다

 

변경 후 변화된 파티클

크기가 적당하니 Rotation의 X값에 -90을 입력해 위를 향하도록한다

그 다음 파티클의 모습을확인할 기본적인 Meterial을 Render 시키겠다

최 하단 Renderer 옵션에서 기본 Meterial을 추가하도록 하겠다.

Particle이 너무 많아 아이템이 보이지 않으니 양을 조절하도록 한다
최상단의 Emission (파티클 출력 량) 을 펼치면 Rate over Time 과 Rate over Distance가 나오는데Rate over Time 은 시간당 나오는 파티클의 수 Rate over Distance 는 오브젝트가 움직일때 나오는 파티클의 수 이다

 

이번에는 Size over Lifetime(살아 있는 동안의 크기) 을 설정해보겠다

size를 보면 몇가지 기본적으로 선택할수 있는 설정이있다 나는 점점 빠르게 작아지는 설정을 사용하겠다.

 

마지막으로 Color over Lifetime 을 설정해 줄 예정인데 파티클의 색상에 관여한다

현재 망치 에셋의 색이 주황색 이므로 주황색에서 점점 노란색으로 변하도록 설정하겠다.

 

 

Gradient Editor 을 통해 조작할수 있고 색상영역의 중간을 클릭하면

새로운 변화지점을 설정할수 있다 이 색은 노란색으로 하겠다또한 위쪽 표시선은 투명도에 관여하는데 점점 파티클이 사라지는것처럼 보일수 있도록 투명도를 낮춰주겠다
파티클을 가진 Hammer 가 완성되었다그다음 해머에 Rigidbody 와 Collider 그리고 Light를 추가해줄 예정이다.
빈 오브젝트에 Light 컴포넌트를 추가해 Range = 빛의 영향이 들어갈 영역 Intensity = 빛의 밝기 만 조절해주었다
RigidBody 와 Sphere Collider 이들은 각각 Hammer 가 물리적으로 존재하게 해주고큰 Sphere Collider 는 isTrigger 를 켜 충돌시 아이템을 습득 하도록 설정할 예정이다

 

마지막으로 Item Script 를 추가해준다

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



public class Item : MonoBehaviour
{
    public enum Type { Ammo, Coin, Grenade, Heart, Weapon };    //Enum 현재 안쪽에 선언 강의를 더 보고 완성도가 생기면 class 밖에 선언하던 기존의 방식과의 차이점이 명확해질듯함
    public Type type;                                           //enum 을 구분 설정하기위한 변수
    public int value;                                           //int 밸류

    void Update()
    {
        transform.Rotate(Vector3.up * 20 * Time.deltaTime); //중간의 20은 속도에따라 변경가능
    }
}

 

간단한 스크립트로 enum 타입으로 각 아이템의 종류를 선언해주고

아이템이 빙글빙글 돌도록 Rotate 함수를 사용해 Y축 중심으로 회전하게 만들어주었다

 

#작업중 변경(수정) 사항

해당 없음

#예상시간/실제시간

1시간 / 1시간 30분 

#작업중 애로사항

해당 없음

#예상되는 애로사항

해당 없음

#지난주 애로사항

해당 없음