017-Repeat Unity FPS Sample - ReplicatedEntityRegistry-04
안녕하세요?
아직도 Item_RobotWeapon_Client 를 작성 중입니다. 이 Item_RobotWeapon_Client 도 Replicated EntityRegisty내에 할당되는 여러개의 Prefab 중의 하나일 뿐입니다.
이번에는 Item_RobotWeapon_Client 에서 아래 표시한 Robot Weapon A script 에 할당될 Asset을 작성해 보겠습니다.
먼저 RocketFire3P 의 위치를 FPS Sample에서 확인해 보겠습니다.
Assets/Audio/Sounddefs/Weapons/RocketFire3P.asset
보기에는 Scriptable Object일 것 같은데, 어딘가 정의가 있겠군요. Robot Weapon A Script를 열어 확인을 시작해보겠습니다.
[ClientOnlyComponent]
public class RobotWeaponA : MonoBehaviour
{
[NonSerialized] public TickEventHandler primFireEvent = new TickEventHandler(0.5f);
[NonSerialized] public TickEventHandler secFireEvent = new TickEventHandler(0.5f);
[NonSerialized] public TickEventHandler meleeImpactEvent = new TickEventHandler(0.5f);
public GunBarrelSetup barrelSetup;
public SoundDef secondaryFireSound;
public ParticleSystem secondaryFireParticle;
public SoundDef meleeImpactSound;
public ParticleSystem meleeImpactEffect;
}
SoundDef 형입니다.
public SoundDef secondaryFireSound;
아래와 같이 Assets\Scripts\Audio\SoundDef.cs 에 SoundDef class가 정의되어 이는 것을 알 수 있습니다.
[CreateAssetMenu(fileName = "Sound", menuName = "FPS Sample/Audio/SoundDef", order = 10000)]
public class SoundDef : ScriptableObject
{
public List<AudioClip> clips;
[Range(-60.f,0.f)]
public float volume = -6.f;
// public float gain = -60.f; // could be a lower floor on rolloff func
[Range(0.f,100.f)]
public float distMin = 1.f;
[Range(0.f,100.f)]
public float distMax = 30.f;
[Range(-20,20.f)]
public float pitchMin = 0.f;
[Range(-20,20.f)]
public float pitchMax = 0.f;
[Range(0,10)]
public int loopCount = 1;
[Range(0,10.f)]
public float delayMin = 0.f;
[Range(0,10.f)]
public float delayMax = 0.f;
[Range(1,20)]
public int repeatMin = 1;
[Range(1,20)]
public int repeatMax = 1;
public SoundMixerGroup soundGroup;
[Range(0.f,1.f)]
public float spatialBlend = 1.f;
[Range(-1.f,1.f)]
public float panMin = 0.f;
[Range(-1.f,1.f)]
public float panMax = 0.f;
public AudioRolloffMode rolloffMode = AudioRolloffMode.Linear;
public void OnValidate()
{
if (distMin > distMax)
distMin = distMax;
if (pitchMin > pitchMax)
pitchMin = pitchMax;
if (delayMin > delayMax)
delayMin = delayMax;
if (repeatMin > repeatMax)
repeatMin = repeatMax;
if (panMin > panMax)
panMin = panMax;
}
}
이 Asset을 만들려면 FPS Sample/Audio/SoundDef 메뉴를 선택하면 된다는 것도 아래 코드를 통해 확인할 수 있습니다.
[CreateAssetMenu(fileName = "Sound", menuName = "FPS Sample/Audio/SoundDef", order = 10000)]
Project 창에서 폴더를 만듭니다.
Assets/Audio/Sounddefs/Weapons
그리고 FPS Sample > Audio > SoundDef 를 선택합니다.
그리고 이름을 RocketFire3P 로 변경합니다.
Inspector 창에서 RocketFire3P를 살펴보니 아래와 같습니다.
FPS Sample에서 살펴보니, 아래와 같이 Audio Clip이 할당되어 있네요.
Audio Clip은 아래의 위치에 있습니다. 작성중인 프로젝트로 복사해 옵니다.
아래와 같이 동일 폴더를 만들어 복사하였습니다.
Asset을 클릭하고 Inspector에서 확인하니, 별도 설정을 변경할 사항은 없어 그대로 둡니다.
아래와 같이 RocketFire3P Scriptable Object의 Clips에 방금 Import 한 Audio clip을 할당하고, 설정도 아래와 같이 변경합니다.
Scene 창엣 Item_RobotWeapon_Client 을 클릭하고, Robot Weapon A script의 Secondary Fire Sound에 RocketFire3P asset을 할당합니다.
FPS Sample에서 Melee Impact Sound도 위치를 확인합니다.
Assets/Audio/Sounddefs/Impacts/MeleeImpact3P.asset
아래와 같이 SoundDef Asset을 생성합니다.
그리고 이름을 MeleeImpact3P 로 변경합니다.
할당해야 할 Audio Clip은 아래에 있습니다.
Assets/Audio/Clips/Impacts/GirlWeaponImpact01.wav
아래와 같이 생성한 MeleeImpact3P SoundDef Asset을 할당합니다.
이제 Secondary Fire Particle을 등록할 차례입니다. 아래와 같이 FPS Sample에서 어떤 Asset인지 확인합니다.
이번에 할당해야 할 것은 Particle이고 Prefab내에 등록된 것이네요.
Particle 추가는 다음에 이어서 하겠습니다.
- 다소승탁진 -
#유니티, 유니티 튜토리얼, 유니티 강좌, Unity, Unity tutorial, HDRP, FPS Sample, 게임 개발, C#
'Unity > Repeat FPS Sample Project' 카테고리의 다른 글
019-Repeat Unity FPS Sample - ReplicatedEntityRegistry-06 (0) | 2020.01.17 |
---|---|
018-Repeat Unity FPS Sample - ReplicatedEntityRegistry-05 (0) | 2020.01.16 |
016-Repeat Unity FPS Sample - ReplicatedEntityRegistry-03 (0) | 2020.01.11 |
015-Repeat Unity FPS Sample - ReplicatedEntityRegistry-02 (0) | 2020.01.11 |
013-Repeat Unity FPS Sample - Console-02 (0) | 2020.01.06 |