ð ã¯ã€ãã¯ã¹ã¿ãŒãã¬ã€ã
LuraSwitch2 ãæéã§å°å ¥ããããã®å®è·µçãªã¬ã€ãã§ããåºæ¬çãªæ©èœãå®éã«èšçœ®ããªããåŠãã§ãããŸãããã
ð¥ ã€ã³ã¹ããŒã«
LuraSwitch2 ã Unity ãããžã§ã¯ãã«å°å ¥ããæé ã解説ããŸãã
ð å¿ èŠãªç°å¢â
LuraSwitch2 ã䜿çšããã«ã¯ã以äžã®ç°å¢ãå¿ èŠã§ãã
- Unity: 2022.3.22f1 以äž
- VRChat SDK: SDK3 - Worlds
- UdonSharp: 3.10 以äž
ð ïž ã€ã³ã¹ããŒã«æé â
1ïžâ£ ããã±ãŒãžã®ããŠã³ããŒãâ
BOOTH ååããŒãž ãã LuraSwitch2 ã®ææ°çãããŠã³ããŒãããŠãã ããã
2ïžâ£ UnityPackage ã®ã€ã³ããŒãâ
- Unity ãããžã§ã¯ããéã
- ããŠã³ããŒããã
.unitypackageãã¡ã€ã«ãããã«ã¯ãªã㯠- ã€ã³ããŒããã€ã¢ãã°ã§ãImportããã¯ãªãã¯
3. ã€ã³ã¹ããŒã«ã®ç¢ºèªâ
ã€ã³ããŒããå®äºãããšã以äžã®ãã©ã«ããäœæãããŸãïŒ
Assets/
QuickBrown/
LuraSwitch2/
01_PREFAB/ # 䜿çšå¯èœãªãã¬ãã
02_CORE/ # ã³ã¢ã¹ã¯ãªãã
SCENE/ # ãµã³ãã«ã·ãŒã³
ãµã³ãã«ã·ãŒã³ã®ç¢ºèªâ
Assets/QuickBrown/LuraSwitch2/SCENE/LuraSwitch2_SAMPLE.unity ãéããšãåã³ã³ããŒãã³ãã®äœ¿çšäŸã確èªã§ããŸãã
TextMeshPro ã®ã€ã³ããŒãâ
ããã¹ããæ£ãã衚瀺ããããã«ãTextMeshPro ããã±ãŒãžãã€ã³ããŒãããŠãã ããã
ã·ãŒã³ãéããŠããéã«ã€ã³ããŒãããŠã衚瀺ãããªãå Žåã¯ãã·ãŒã³ãå床éããªãããŠã¿ãŠãã ããã
ãŠã£ã³ããŠãæ¶ããŠããŸã£ãå ŽåãPackage Manager ããTextMeshProãæ€çŽ¢ããå床ã€ã³ããŒãããŠãã ããã
1ïžâ£ ãŸãã¯ããã©ãŒã»ããããé 眮ãããâ
æè»œã«å§ããããã«ã¯LuraSwitch2 ã®æ©èœãäžéãæã£ã
*LuraMirror_SwitchSet[SAMPLE] ãã¬ãããé
眮ããããšããå§ããŸãããã
ãã¬ããã®é 眮â

ãããžã§ã¯ããŠã£ã³ããŠãã LuraMirror_SwitchSet[SAMPLE] ãã·ãŒã³ã«ãã©ãã°ïŒããããããŠãã ããã
åºæ¬çãªèª¿æŽæé â
ãã©ãŒã»ããã«ã¯ä»¥äžã®éèŠãªã³ã³ããŒãã³ããå«ãŸããŠããŸãã
- LuraMirrorïŒãã©ãŒæ¬äœïŒ
- SwitchïŒãã©ãŒã¹ã€ããïŒ
- SliderïŒã¹ã©ã€ããŒïŒ
- ModeSwitchïŒHQïŒLQ åãæ¿ãã¹ã€ããïŒ
- SwitchSyncerïŒã¹ã€ããé£åçšPrefabïŒ
- SwitchBoardïŒ2Dã¹ã€ãããé 眮å¯èœãªããŒãïŒ
ã¹ããã 1: é¡ã®é 眮ã調æŽããâ
ããšã©ã«ããŒå
ã® ReferenceMirror ãªããžã§ã¯ããéžæããPositionã»Rotationã»Scale ã調æŽããŠãé¡ã奜ã¿ã®äœçœ®ã»ãµã€ãºã«é
眮ããŠãã ããã
ã¹ããã 2: ãšãªã¢ã®èšå®ãè¡ãâ

ãã©ãŒã·ã¹ãã ã«ã¯2ã€ã®ãšãªã¢èšå®ããããŸãã

- FullAreaïŒãã«ãšãªã¢ïŒ: é¡ãæé«å質ã§è¡šç€ºãããç¯å²ãèšå®ããŸããéåžžãé¡ã®æ£é¢ã«é 眮ããŸãã
- StartAreaïŒã¹ã¿ãŒããšãªã¢ïŒ: ãã¬ã€ã€ãŒããã®ç¯å²ã«å ¥ããšé¡ãèµ·åããŸããè² è·ç®¡çã®ãããé©åãªãµã€ãºã«èª¿æŽããŠãã ããã
ãšãã£ã¿äžã§é¡ã®èŠãæ¹ã確èªãããå Žåã¯ãPreviewMirrorType ãåãæ¿ããŠãã ããã


â» é¡ãçã£çœã§è¡šç€ºãããå Žåã¯ãUnity ãšãã£ã¿äžã§äžåºŠ Play ã¢ãŒãã«å ¥ãããšã§æ£ãã衚瀺ãããããã«ãªããŸãã
詳现ã«ã€ããŠã¯ LuraMirror ã®ããŒãž ãã芧ãã ããã
2ïžâ£ ã¹ã€ããã䜿ãããªããâ
ãã©ãŒã»ããã«å«ãŸããã¹ã€ããâ
ãã©ãŒã»ããã«ã¯ Switch_Mirror ãå«ãŸããŠããŸããããã¯é¡ã®ãªã³ã»ãªããåãæ¿ããããã®å°çšã¹ã€ããã§ãã
ã¹ã€ããã®åºæ¬â
ã¹ã€ãã㯠ãªã³ã»ãªãã®2ç¶æ ãåãæ¿ããã³ã³ããŒãã³ãã§ããã©ã€ãã®ç¹ç¯ã»æ¶ç¯ããªããžã§ã¯ãã®è¡šç€ºã»é衚瀺ãªã©ãæ§ã ãªèŠçŽ ãå¶åŸ¡ã§ããŸãã
ã¿ãŒã²ããã®æå®æ¹æ³â

ã¹ã€ããã®ã€ã³ã¹ãã¯ã¿ã§ãå¶åŸ¡å¯Ÿè±¡ãæå®ããŸãã
- On Targets: ãªã³ç¶æ ã§ã¢ã¯ãã£ãã«ãªããªããžã§ã¯ã
- Off Targets: ãªã³ç¶æ ã§éã¢ã¯ãã£ãã«ãªããªããžã§ã¯ã
æ§ç㯠Toggle æ¹åŒã§ããããLuraSwitch2 ã§ã¯ On ç¶æ ãš Off ç¶æ ãæç¢ºã«åºå¥ããŸããããã«ãããããçŽæçã§äºæž¬å¯èœãªåäœãå®çŸããŠããŸãã
ãã©ãŒã»ããã«å«ãŸããŠããã¹ã€ããã«ã¯æ¢ã«ãã©ãŒãèµ·åããããã®Activatorãã¿ãŒã²ãããèšå®ãããŠãããã倿Žããå¿ èŠã¯ãããŸããã
åæã¢ãŒã (SyncMode)â

- None: åæãªãïŒåãã¬ã€ã€ãŒåå¥ã«åäœïŒ
- Global: å šãã¬ã€ã€ãŒã§ç¶æ ãåæ
- Local: ããŒã«ã«ã«ä¿åïŒã¯ãŒã«ãã»ãŒãïŒ
ããã©ã«ãç¶æ ã®åãæ¿ãâ

ToggleDefaultOn ãåãæ¿ããããšã§ãã¹ã€ããã®åæç¶æ
ïŒãªã³ã»ãªãïŒãèšå®ã§ããŸãã
ãã®èšå®ã倿ŽãããšãUnity ãšãã£ã¿äžã§ãå³åº§ã«ã¹ã€ãããšãèšå®ãããªããžã§ã¯ãã®èŠãç®ãå€åããŸãã
Play ã¢ãŒãã«å
¥ããªããŠããèŠèŠçã«ç¶æ
ã確èªã§ããŸãã
SwitchTextã®èšå®â

SwitchText ãèšå
¥ãããšã3Dã¹ã€ãããš2Dã¹ã€ããã«è¡šç€ºãããããã¹ããäžæ¬ã§èšå®ã§ããŸãã
Switch_InformationText ãèšå
¥ãããšãVRChatã§Useããããšãããšãã«æµ®ãã³äžããããã¹ããèšå®ã§ããŸãã
- Switch_InformationText:
Mirror(Local)ã®ããã«Local/Global/LocalSave ã®ç¶æ ãèªåçã«è¿œå ãããŸãã - Text Auto Update: ãã§ãã¯ãå€ããšèªåèšå®ãããªããªããŸããæåã§ããã¹ããèšå®ããå¿ èŠãããå Žåã¯ãã¡ãããªãã«ããŠãã ããã
- æåæ°ãªãŒããŒ: æåæ°ãå€ããªã£ãŠè¡šç€ºããããããªã£ãå Žåã¯ãTextã®ãã©ã³ããµã€ãºãçŽæ¥èª¿æŽããŠãã ããã
倿§ãªã¹ã€ããããªãšãŒã·ã§ã³â
LuraSwitch2 ã§ã¯ãçšéã«å¿ããŠå€åœ©ãªãã¶ã€ã³ã®ã¹ã€ãããçšæããŠããŸãã

MirrorHQïŒãã©ãŒHQïŒ

MirrorLQïŒãã©ãŒLQïŒ

ObjectïŒãªããžã§ã¯ãïŒ

PenïŒãã³ïŒ

KeyïŒããŒïŒ

InformationïŒæ å ±ïŒ

AcceptïŒæ¿èªïŒ

SettingïŒèšå®ïŒ

PowerïŒé»æºïŒ

LiquarïŒãªãã¥ãŒã«ïŒ

FoodïŒé£ã¹ç©ïŒ

HeartïŒããŒãïŒ

AudioïŒãªãŒãã£ãªïŒ

VideoïŒãããªïŒ

MusicïŒé³æ¥œïŒ

ChairïŒæ€ åïŒ

LiteModeïŒè»œéã¢ãŒãïŒ

SavePointïŒã»ãŒããã€ã³ãïŒ

SavePointïŒã»ãŒããã€ã³ãïŒ

One

Two

Three

Four

Language JPïŒæ¥æ¬èªïŒ

Language ENïŒè±èªïŒ

Language KOïŒéåœèªïŒ

Language CHïŒäžåœèªïŒ

ColliderïŒã³ã©ã€ããŒïŒ

BedïŒãããïŒ

PostEffectïŒãã¹ããšãã§ã¯ãïŒ

NightïŒæŒå€åæ¿ïŒ

EffectïŒãšãã§ã¯ãïŒ

SkyboxïŒã¹ã«ã€ããã¯ã¹ïŒ
AvatarLightïŒã¢ãã¿ãŒã©ã€ãïŒ

LightïŒã©ã€ãïŒ
ã¹ã€ããã®è©³çŽ°ãªæ©èœã«ã€ããŠã¯ãã¹ã€ããæŠèŠããŒãž ãã芧ãã ããã
3ïžâ£ ã¹ã©ã€ããŒã§ãã©ãŒéæåºŠãã³ã³ãããŒã«ãããâ
ãã©ãŒã»ããã«å«ãŸããã¹ã©ã€ããŒâ
Slider_Mirror ã¯é¡ã®éæåºŠã段éçã«èª¿æŽã§ããã¹ã©ã€ããŒã§ãã
ã¹ã©ã€ããŒã®åºæ¬â
ã¹ã©ã€ããŒã¯ 0ã100% ã®é£ç¶çãªå€ ã調æŽããã³ã³ããŒãã³ãã§ãã10% å»ã¿ã§ã¹ããããããããæ£ç¢ºãªå€èšå®ãç°¡åã«è¡ããŸãã
ã¹ã©ã€ããŒã®å€ã0ã«ããå Žåã§ãããã©ãŒã¯éã¢ã¯ãã£ãç¶æ
ã«ãªããè² è·ã¯çºçããªããªããŸãã
ã€ãŸããã¡ã€ã³ã®ãã©ãŒã¹ã€ããç¡ãã§ãã¹ã©ã€ããŒã ãã§é¡ã®ãªã³ã»ãªãã管çããããšãå¯èœã§ãã
䜿ãããããã©ããã¯ãŠãŒã¶ãŒã«ãããŸãããéžæè¢ã®äžã€ãšããŠèŠããŠãããšè¯ãã§ãããã
ã¿ãŒã²ããèšå® (TargetSetting)â

ã¹ã©ã€ããŒã®ã€ã³ã¹ãã¯ã¿ã§ãå¶åŸ¡å¯Ÿè±¡ãšãã©ã¡ãŒã¿ãæå®ããŸãããã©ãŒã®è§£å床ãã©ã€ãã®æãããé³éãªã©ãçšéã«å¿ããèšå®ãå¯èœã§ãã
åæã¢ãŒã (SyncMode)â

- None: åæãªãïŒåãã¬ã€ã€ãŒåå¥ã«èª¿æŽïŒ
- Global: å šãã¬ã€ã€ãŒã§å€ãåæ
- Local: ããŒã«ã«ã«ä¿åïŒæ¬¡å蚪åæãèšå®ãä¿æïŒ
ããã©ã«ãå€ã®èšå®â
DefaultValue ã§ãã¹ã©ã€ããŒã®åæå€ïŒ0ã100%ïŒãèšå®ã§ããŸãã
- ããŒã«ã«ïŒãã©ãŒéæåºŠãé³éãªã©ïŒ: åºæ¬çã«ã¯
Localã¢ãŒããæšå¥šã§ãã - ã°ããŒãã«ïŒæŒåºã®å€æŽãªã©ïŒ:
Globalã¢ãŒãã§å šå¡ã«åãèšå®ãé©çšã§ããŸãã
æ©èœå¥ã¹ã©ã€ããŒããªãšãŒã·ã§ã³â
çšéã«å¿ããå°çšã¹ã©ã€ããŒã倿°çšæããŠããŸãã

MirrorRotateïŒé¡å転ïŒ

MirrorHeightïŒé¡ã®é«ãïŒ

ObjectïŒãªããžã§ã¯ãïŒ

MusicïŒé³æ¥œïŒ

AudioïŒãªãŒãã£ãªïŒ
AvatarLightïŒã¢ãã¿ãŒã©ã€ãïŒ

LightïŒã©ã€ãïŒ

ColliderïŒã³ã©ã€ããŒïŒ

NightïŒãã€ãã¢ãŒã匷床ïŒ

PostEffectïŒãã¹ããšãã§ã¯ãïŒ
詳现ã«ã€ããŠã¯ ã¹ã©ã€ããŒæŠèŠããŒãž ãã芧ãã ããã
4ïžâ£ ã¢ãŒãã¹ã€ããã§è€æ°ã®éžæè¢ã管çããã ðâ
ã¢ãŒãã¹ã€ããã¯ãè€æ°ã®ç¶æ ãã1ã€ã ããéžæãã æä»å¶åŸ¡ ãå®çŸããŸãã
å éšæ§é â

ã¢ãŒãã¹ã€ããã«ã¯éåžžã®ã¹ã€ããã2ã€ïŒSwitchA ãš SwitchBïŒå
å
ãããŠããŸããããããã®ã¹ã€ããã§ã¿ãŒã²ãããåå¥ã«èšå®ã§ããŸãã
èšå®æ¹æ³â
åæèšå®ãããã©ã«ãå€ã®ç®¡çã¯ã芪ãªããžã§ã¯ãã® ModeSwitch æ¬äœã«ãã SwitchSelector ã³ã³ããŒãã³ãã§è¡ããŸãã
- SwitchA ã« HQ ãã©ãŒã®ã¢ã¯ãã£ããŒã¿ãŒãèšå®
- SwitchB ã« LQ ãã©ãŒã®ã¢ã¯ãã£ããŒã¿ãŒãèšå®
ããã§ãã©ã¡ããäžæ¹ã ããæå¹ã«ãªãæä»å¶åŸ¡ã宿ããŸãããã¬ã€ã€ãŒã¯èªåã®ç°å¢ã«åãããŠé¡ã®HQïŒLQãéžæã§ããŸãã
詳现ã«ã€ããŠã¯ ã¢ãŒãã¹ã€ããæŠèŠããŒãž ãã芧ãã ããã
5ïžâ£ 2Dåãæ¿ãæ©èœã§èŠãç®ã倿Žãããâ
ãã¹ãŠã®ã¹ã€ãããšã¹ã©ã€ããŒã¯ 3Dã¢ãŒã ãš 2Dã¢ãŒã ãç°¡åã«åãæ¿ããããŸããçšéã«åãããŠæé©ãªæäœæ¹æ³ãéžæããŠãã ããã
3ã€ã®æäœã¢ãŒãâ
| ã¢ãŒã | 説æ | çšé |
|---|---|---|
| 2D_Interact | 2Dã¢ãŒããããªã¬ãŒã«çŽæ¥ã€ã³ã¿ã©ã¯ãããæ¹åŒãè¿ã¥ãå¿ èŠããããŸãããã¬ãŒã¶ãŒãã€ã³ã¿ãŒãåããå¿ èŠããããŸããã | æŒããããããã« |
| 2D_UI | 2Dã¢ãŒããã¬ãŒã¶ãŒãã€ã³ã¿ãŒã§æäœããæ¹åŒãé¢ããå Žæããã¬ãŒã¶ãŒã«ããæäœãå¯èœã§ãã | UIããã« |
| 3D | 3Dã¢ãŒããããªã¬ãŒãã€ã³ã¿ã©ã¯ãããåŸæ¥ã®æ¹åŒã | ç©çã¹ã€ãã |
6ïžâ£ SwitchBoard ã§æäœããã«ãäœããâ
SwitchBoard ã¯ã2Dã¢ãŒãã®ã¹ã€ããã»ã¹ã©ã€ããŒãäžç®æã«éçŽããæäœããã«ã§ãã
ã»ããã¢ããæé â
ããšã©ã«ããŒå
ã® â â â â SwitchHereâ â â â ã®åãšããŠã2Dã¢ãŒãã®ã¹ã€ãããã¹ã©ã€ããŒãé
眮ããŠãã ããã

ãã«ããŒã·ã¹ãã â
SwitchBoard ã¯ãæå®ããæãè¿ã SwitchBoardHolder ã®äœçœ®ã«èªåçã«ç§»åããŸãã

ã€ã³ã¹ãã¯ã¿ã§ SwitchBoardHolder ãæå®ããããšã§ãç§»åã»åŒã³åºããå¯èœã«ãªããŸãã
åäœã¢ãŒãâ
- Pickup ã¢ãŒã: ãã¬ã€ã€ãŒãæã¡éã¹ã坿¬åããã«
- Static ã¢ãŒã: å£é¢ãªã©ã«åºå®ãããæ®ã眮ãåããã«
- è€æ°ã®ãã«ããŒãé
眮: ã¯ãŒã«ãå
ã®åãšãªã¢ã«
SwitchBoardHolderãé 眮ããHoldersã«æå®ããããšã§ããã¬ã€ã€ãŒã®æå¯ãã®äœçœ®ã«æäœããã«ãç§»åããŸãã - Pickup ïŒ Static: æã¡éã³ããå Žå㯠Pickup ã¢ãŒããå£ã«åºå®ãããå Žå㯠Static ã¢ãŒããéžæããŠãã ããã
詳现ã«ã€ããŠã¯ SwitchBoard ã®ããŒãž ãã芧ãã ããã
7ïžâ£ SwitchSyncer ã§ã¹ã€ãããé£åãããã ðâ

SwitchSyncer ã¯ãè€æ°ã®ã¹ã€ãããã¹ã©ã€ããŒã®ç¶æ
ãé£åãããããã®ããŒã«ã§ãã
äœ¿ãæ¹â

SwitchSyncerã«ã¹ã€ãããæå®ããã ãã§ããããã®ã¹ã€ãããåæãããããã«ãªããŸãã
è€æ°ã®ã¹ã€ãããåžžã«é£åãããå Žåãã¿ãŒã²ããã®åç
§èšå®ã¯1ã€ã®ã¹ã€ããã ãã§è¡ããæ®ãã®ã¹ã€ãã㯠SwitchSyncer ã§é£åãããæ§æã«ãããšãã»ããã¢ãããšä¿å®ã倧å¹
ã«ç°¡çŽ åãããŸãã
詳现ã«ã€ããŠã¯ SwitchSyncer ã®ããŒãž ãã芧ãã ããã
次ã®ã¹ããã ð¯â
åºæ¬çãªäœ¿ãæ¹ãçè§£ã§ãããã以äžã®ããŒãžã§è©³çްã確èªããŠãã ããïŒ