ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2024ǯ12·î27Æü(¶â) 17:29:23ÍúÎò
¡¡¤½¤Î¾ì¹ç¤Ë¤Ï¤Þ¤º¡¢AR Session Origin ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È(¤¢¤ë¤¤¤Ï XR Origin ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È)¤Î°ÌÃÖ¤òÄ´À°¤·¤Æ¡¢ºÆÅÙ¡¢¼Âµ¡¤Ë¤Æ³Îǧ¤ò¹Ô¤Ã¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
AR Camera ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ï¤³¤Î AR Session Origin ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î»Ò¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ë¤¿¤á¡¢
¿Æ¤Ç¤¢¤ë AR Session Origin ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎºÂɸ¤¬ÊѤï¤ì¤Ð¡¢¥«¥á¥é¤Î°ÌÃÖ¤¬Êѹ¹¤Ë¤Ê¤ë¤¿¤á¤Ç¤¹¡£
¡¡¤½¤ì¤Ç¤â¤¦¤Þ¤¯¤¤¤«¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¤³¤Î¼ê½ç¤òÍøÍѤ·¤Æ¥«¥á¥é¤Î°ÌÃÖ¤òÄ´À°¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
ȯŸ£±£±¡¡¡¼¥«¥á¥é¤Î°ÌÃÖÄ´À°¡¼
£±£¶¡¥AR ¥«¥á¥é¤Î°ÌÃÖ¤òÄ´À°¤¹¤ë
¡¡¿·¤·¤¤³Ø½¬ÆâÍƤϡ¢°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£
¡¡¡¦¥¿¥×¥ë·¿
¡¡°ÊÁ°¤Ë³Ø½¬¤·¤¿¤è¤¦¤Ë¡¢¸½ºß¤ÏÊ¿ÌÌ´¶ÃΤ˹ç¤ï¤»¤Æ Stage ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤¹¤ë¤¿¤á¡¢Stage ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÏºÇ½é¤«¤é¥Ò¥¨¥é¥ë¥¡¼¤Ë¤Ï¸ºß¤·¤Æ¤¤¤Ê¤¤¾õÂ֤ˤʤäƤ¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¥Ú¥ó¥®¥ó¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤â¡¢¥Ò¥¨¥é¥ë¥¡¼¤Ë¤ÏºÇ½é¤«¤é¸ºß¤·¤Æ¤¤¤Þ¤»¤ó¡£
¡¡¤Þ¤¿¡¢AR ÍѤΥ«¥á¥é¤âÊ¿ÌÌ´¶ÃΤËÍøÍѤϤ·¤Æ¤¤¤Þ¤¹¤¬¡¢À¸À®¤µ¤ì¤¿ Stage Æâ¤Ë¤Ï¸ºß¤·¤Æ¤¤¤Ê¤¤¤¿¤á¡¢¥¹¥¯¥ê¥×¥È¤òÍøÍѤ·¤Æ
¥«¥á¥é¤ÎÄɽ¾ÂоݤǤ¢¤ë¥Ú¥ó¥®¥ó¤ò¡¢Stage ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀ¸À®¸å¤ËÀßÄê¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£ARGameManager ¥¯¥é¥¹Æâ¤Ç¼Â¹Ô¤·¤Æ¤¤¤ë CameraController ¥¯¥é¥¹¤Î SetPlayer ¥á¥½¥Ã¥É¤Ç¤¹¡£
¡¡¤¿¤À¤·¡¢¤³¤Á¤é¤ÎÀßÄê¤ò¤ª¤³¤Ê¤Ã¤Æ¤â¡¢AR ¥«¥á¥é¤¬Ä̾ï¤Î¥²¡¼¥à¤Î¤è¤¦¤Ë¥Ú¥ó¥®¥ó¤òÀµ¤·¤¤°ÌÃÖ¤ÇÄɽ¾¤¹¤ë¤³¤È¤¬Æñ¤·¤¤¥±¡¼¥¹¤¬¤¢¤ê¤Þ¤¹¡£
¡¡¤½¤Î¤è¤¦¤Ê¾ì¹ç¤Î²ò·èºö¤Î£±¤Ä¤È¤·¤Æ¡¢Stage ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤Ë¡¢¿·¤·¤¯¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÇÛÃÖ¤·¡¢
¤½¤Î°ÌÃÖ¤ò AR ¥«¥á¥é¤ÎÀßÄê°ÌÃ֤Ȥ·¤ÆÍøÍѤ¹¤ëÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£
¡¡º£²ó¤Ï¤³¤ÎÊýË¡¤ò»È¤Ã¤Æ¡¢AR ¥«¥á¥é¤Î°ÌÃÖ¤òÊäÀµ¤·¡¢º£¤Þ¤Ç¤ÈƱ¤¸¤è¤¦¤Ê¥«¥á¥é¤Î°ÌÃ֤ǥڥ󥮥ó¤òÄɽ¾¤µ¤»¤ë¤è¤¦¤Ë½¤Àµ¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡¤³¤ÎÊýË¡¤À¤±¤¬²ò·èÊýË¡¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢¼«Ê¬¤Ç¤â¡¢¤É¤¦¤¹¤ì¤Ð¤¦¤Þ¤¯¥«¥á¥é¤¬¥Ú¥ó¥®¥ó¤òÄɽ¾¤·¤Æ¤¯¤ì¤ë¤Î¤«¤ò¹Í¤¨¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
¡¡Prefabs ¥Õ¥©¥ë¥ÀÆâ¤Ë¤¢¤ë Stage ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÁªÂò¤·¤Æ¥À¥Ö¥ë¥¯¥ê¥Ã¥¯¤¹¤ë¤«¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤Ç Open ¤òÁªÂò¤·¤Æ¥×¥ì¥Õ¥¡¥ÖÊÔ½¸¥â¡¼¥É¤Ë¤·¤Þ¤¹¡£
¡¡Stage ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¾å¤Ç±¦¥¯¥ê¥Ã¥¯¤ò¤·¤Æ¥á¥Ë¥å¡¼¤ò³«¤¡¢Create Empty ¤òÁªÂò¤·¤Æ¿·¤·¤¤¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò£±¤ÄÄɲä·¤Þ¤¹¡£
̾Á°¤Ï CameraOffsetObj ¤ËÊѹ¹¤·¤Þ¤¹¡£
¡¡¤³¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃ֤˥«¥á¥é¤¬Íè¤ë¤è¤¦¤ËÀ©¸æ¤ò¹Ô¤¦¤è¤¦¤Ë¤·¤Þ¤¹¤Î¤Ç¡¢
¥Ú¥ó¥®¥ó¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¸åÊý¤ËŬµ¹¤Ê°ÌÃÖ¤ò·è¤á¤ÆÇÛÃÖ¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡º£²ó¤Ï¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü¤âÍÑ°Õ¤·¤Þ¤·¤¿¤¬¡¢»²¹ÍÃͤǤ¹¡£¤´¼«Ê¬¤Î¥×¥í¥¸¥§¥¯¥È¤ÎÆâÍƤǷè¤á¤Æ¤¯¤À¤µ¤¤¡£
Stage ¥×¥ì¥Õ¥¡¥Ö¡¡¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ò¥¨¥é¥ë¥¡¼

CameraOffsetObj ¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü(Ãͤϻ²¹ÍÃͤǤ¹)

Scene ¥Ó¥å¡¼²èÁü¡

Scene ¥Ó¥å¡¼²èÁü¢

Scene ¥Ó¥å¡¼²èÁü£

¡¡°Ê¾å¤Ç´°À®¤Ç¤¹¡£
¡¡Stage ¥×¥ì¥Õ¥¡¥ÖÆâ¤ËÄɲä·¤¿ CameraOffsetObj ¤Î¾ðÊó¤ò¥¹¥¯¥ê¥×¥È¤Ç´ÉÍý¤ò¹Ô¤¦¤è¤¦¤Ë¤·¡¢
¥²¡¼¥àÆâ¤Ç¥¹¥Æ¡¼¥¸¤òÀ¸À®¤·¤¿ºÝ¤Ë¡¢Â¾¤Î¥¹¥¯¥ê¥×¥ÈÂФ·¤Æ¥¹¥Æ¡¼¥¸¤Î¾ðÊó¤È¤·¤ÆÄ󶡤Ǥ¤ë¤è¤¦¤Ë¡¢ÀìÍѤΥ᥽¥Ã¥É¤òºîÀ®¤·¤Æ¤ª¤¤Þ¤¹¡£
¡¡º£²ó¤Ï³Ø½¬¤Î¤¿¤á¡¢£²¤Ä¤Î¥á¥½¥Ã¥É¤òÍÑ°Õ¤·¤Þ¤·¤¿¡£¤É¤Á¤é¤òÍøÍѤ·¤Æ¤âƱ¤¸½èÍý¤ò¼ÂÁõ¤Ç¤¤Þ¤¹¡£
¤³¤Î¤¦¤Á¤Î£±¤Ä¤Ï¡¢¥á¥½¥Ã¥É¤ÎÌá¤êÃͤ˥¿¥×¥ë·¿¤Î¾ðÊó¤òÀßÄꤷ¤Æ¤¤¤Þ¤¹¡£
Stage.cs
¡¡¥¿¥×¥ë(tuple)·¿¤Ï C# ¤Î»ý¤Äµ¡Ç½¤Î£±¤Ä¤Ç¤¹¡£Ê£¿ô¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ç¡¼¥¿¤ò¤Ò¤È¤Þ¤È¤á¤Ë¤·¤Æ´ÉÍý¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤Þ¤¿¡¢Ìá¤êÃͤȤ·¤ÆÍøÍѤ¹¤ë¾ì¹ç¤Ë¤Ï¡¢Ä̾ï¤ÎÌá¤êÃͤ˻ØÄê¤Ç¤¤ë·¿¤Ï£±¤Ä¤À¤±¤Ç¤¹¤¬¡¢¥¿¥×¥ë·¿¤òÍøÍѤ¹¤ë¤³¤È¤Ë¤è¤ê
Ê£¿ô¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ç¡¼¥¿¤òƱ¤¸¤è¤¦¤Ë¤Þ¤È¤á¤ÆÌ᤹µ¡Ç½¤ò¼ÂÁõ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡¥¿¥×¥ë·¿¤ÎÀë¸À¤Î½ñ¼°¤ÏÊ£¿ô¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤½¤ì¤¾¤ì¾Ò²ð¤·¤Þ¤¹¡£º£²ó¤Ï¢¤Î½ñ¼°¤Ç¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£
¡¡
¡ãµ½ÒÎã¡¡ä
¡¡// Àë¸À¤ÈÂåÆþ (int, bool) damage = (0, false); ¡¡// Àë¸À ¡¡(Sprite, MoveTimeScale) nextTimeScaleValue; ¡¡// ¥á¥½¥Ã¥É¤ÎÌá¤êÃͤȤ·¤ÆÀë¸À ¡¡private (int, bool) GetTuple()
¡¡¾åµ¤ÎÎã¤Î¾ì¹ç¡¢damage ÊÑ¿ô¤ä nextTimeScaleValue ÊÑ¿ô¤Ë¤Ï¡¢£²¤Ä¤Î·¿¤Î¾ðÊ󤬴ޤޤì¤Æ¤¤¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¤è¤êÃúÇ«¤Ë½ñ¤¯¾ì¹ç¤Ë¤Ï¡¢º£²ó¤Î¤è¤¦¤Ë¡¢Ä̾ï¤ÎÊÑ¿ô¤Î¤è¤¦¤Ë·¿¤ËÂФ·¤ÆÀë¸À¤â²Äǽ¤Ç¤¹¡£
½ÐÍè¤ë¤À¤±¥¿¥×¥ëÆâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ë¤âÊÑ¿ô¤ÎÀë¸À¤ò¤Ä¤±¤ÆÍøÍѤ¹¤ë¤³¤È¤ò¤ª¤¹¤¹¤á¤·¤Þ¤¹¡£
¡ãµ½ÒÎ㢡ä
¡¡// Àë¸À¤ÈÂåÆþ (int value, bool isWeakness) = (0, false); ¡¡// Àë¸À ¡¡(Sprite nextSprite, MoveTimeScale nextMoveTimeScaleType); // ¥¿¥×¥ë·¿¤Î¾ì¹ç¡¢¥á¥½¥Ã¥É¤ÎÌá¤êÃͤˤâÊÑ¿ô¤òÀë¸À¤Ç¤¤ë ¡¡(GameObject player, GameObject cameraObj)
¡ãµ½ÒÎ㣡ä
(int value, bool isWeakness) damage = (0, false); ¡¡(Sprite nextSprite, MoveTimeScale nextMoveTimeScaleType) nextTimeScaleValue;
¡¡¥¿¥×¥ë·¿¤Î¾ðÊó¤ò°·¤¦¾ì¹ç¡¢¥¿¥×¥ëÆâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤ÆÊÑ¿ô¤ÎÀë¸À¤ò¹Ô¤Ã¤Æ¤¤¤ë¤«¡¢¤¤¤Ê¤¤¤«¤Ë¤è¤Ã¤Æ¡¢»²¾È¤¹¤ë¾ì¹ç¤Îµ½Ò¤¬ÊѤï¤ê¤Þ¤¹¡£
¡¡µ½ÒÎ㡤Τ褦¤Ë¡¢¥¿¥×¥ëÆâ¤Ç·¿¤Î¤ß¤·¤«Àë¸À¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¥¿¥×¥ëÆâ¤Î¾ðÊó¤Ï Item1¡¢Item2 ¤È¤¤¤¦¤è¤¦¤Ë¼«Æ°Åª¤ËºÎÈÖ¤µ¤ì¤Þ¤¹¡£
¤½¤Î¾ì¹ç¤Ï¡¢¡Ö¥¿¥×¥ë¤ÎÊÑ¿ô̾.¥¿¥×¥ëÆâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀë¸À½ç¤ÎItem¤ÎÈÖ¹æ¡×¤Î½ñ¼°¤Çµ½Ò¤Ç¤¤Þ¤¹¡£
¡ãµ½ÒÎ㡤ξì¹ç¤Î»²¾ÈÎã¡ä
Hoge(damage.Item1); // int ·¿¤Î°ú¿ô¤ò»²¾È¤·¤ÆÅϤ·¤Æ¤¤¤Þ¤¹ Hpge(nextTimeScaleValue.Item2)
¡¡ÊÑ¿ô¤ÎÀë¸À¤ò¹Ô¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢Ä̾ï¤ÎÊÑ¿ô¤Î¤è¤¦¤Ë¡Ö¥¿¥×¥ë¤ÎÊÑ¿ô̾.¥¿¥×¥ëÆâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÊÑ¿ô̾¡×¤Î½ñ¼°¤Çµ½Ò¤Ç¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¥¿¥×¥ë¤ÎÊÑ¿ô̾¤«¤é¡¢Ãͤο䬤¬²Äǽ¤Ç¤¹¡£
¡ãµ½ÒÎ㢤ξì¹ç¤Î»²¾ÈÎã¡ä
Hoge(damage.value); // int ·¿¤Î°ú¿ô¤ò»²¾È¤·¤ÆÅϤ·¤Æ¤¤¤Þ¤¹ Hoge(nextTimeScaleValue.nextSprite); // Sprite ·¿¤Î°ú¿ô¤ò»²¾È¤·¤ÆÅϤ·¤Æ¤¤¤Þ¤¹
¡¡Item1¡¢Item2 ¤Ç¤â½èÍý¤ÏÆ°¤¤Þ¤¹¤¬¡¢¥×¥í¥°¥é¥à¤Ï½èÍý¤ò¸«¤Æ¡¢Ã¯¤Ç¤â¤¹¤°¤ËÆâÍƤ¬Íý²ò¤Ç¤¤ëÀ߷פ¬ÍýÁۤǤ¹¡£
¤Ê¤ë¤Ù¤¯ÊÑ¿ô̾¤ò¤Ä¤±¤Æ¥¿¥×¥ë¤ÎÀë¸À¤ò¤·¤¿Êý¤¬¤¤¤¤¤È¤¤¤¦¤Î¤Ï¡¢¤³¤Î¤è¤¦¤Ë¥×¥í¥°¥é¥à¤Î²ÄÆÉÀ¤Ë´Ø¤ï¤ë¤¿¤á¤Ç¤¹¡£
damage.Item1 ¤è¤ê¤â¡¢damage.value ¤ÎÊý¤¬¡¢ÊÑ¿ô̾¤À¤±¸«¤Æ¤â¤É¤Î¤è¤¦¤ÊÃͤ¬ÂåÆþ¤µ¤ì¤Æ¤¤¤ë¤«È½ÃǤ¬¤Ä¤¤ä¤¹¤¤¤Î¤Ç¡¢½èÍý¤òÆɤ߲ò¤¤ä¤¹¤¤¤È¤¤¤¦¤³¤È¤Ç¤¹¡£
¡¡º£²ó¤Î¼ÂÁõ¤Ç¤Ï¡¢¥á¥½¥Ã¥É¤ÎÌá¤êÃͤȤ·¤Æ¥¿¥×¥ë·¿¤òÍøÍѤ·¡¢£²¤Ä¤Î·¿¤Î¾ðÊó¤òÌ᤹½èÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤ÎÃͤò¼õ¤±¼è¤ë¦¤Ç¤Ï¡¢Æ±¤¸ÆâÍƤΥ¿¥×¥ë·¿¤ò½àÈ÷¤·¤Æ¤ª¤¯¤³¤È¤Ë¤è¤ê¡¢Ìá¤êÃͤξðÊó¤ò£²¤Ä¤Þ¤È¤á¤Æ¼õ¤±¼è¤ì¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£
Stage.cs
/// <summary> /// ¥×¥ì¥¤¥ä¡¼¤È¥«¥á¥é¤Î¥ª¥Õ¥»¥Ã¥È°ÌÃÖ¤ÎξÊý¤Î¾ðÊó¤ò¼èÆÀ /// </summary> /// <returns></returns> public (GameObject player, GameObject cameraObj) GetStageInfo() { return (playerObj, cameraOffsetObj); }
¡¡°Ê¹ß¤Î¼ê½ç¤Ç¡¢¼ÂºÝ¤Ë¥¿¥×¥ë·¿¤ÎÌá¤êÃͤòÍøÍѤ¹¤ë½èÍý¤ò½ñ¤¤Þ¤¹¤¬¡¢¤³¤³¤Ç¼ÂÁõ¤·¤Æ¤¤¤ëÉôʬ¤òÀè¤Ëµ½Ò¤·¤Æ¤ª¤¤Þ¤¹¡£
ARGameManager.cs
¡ãÌá¤êÃͤΤ¢¤ë¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¦¡ä
¡¡// ¥¿¥×¥ë·¿¤Î stageInfo ÊÑ¿ô¤òÀë¸À¤·¡¢Stage ¥¯¥é¥¹¤Î GetStageInfo ¥á¥½¥Ã¥É¤ÎÌá¤êÃͤȤ·¤Æ¡¢Æ±¤¸¥¿¥×¥ë·¿¤Î¾ðÊó¤ò¼èÆÀ¤·¤ÆÂåÆþ ¡¡(GameObject player, GameObject cameraOffsetObj) stageInfo = obj.GetComponent<Stage>().GetStageInfo(); ¡¡// ¥Ú¥ó¥®¥ó¤Î¾ðÊó¤È¥«¥á¥é¤Î°ÌÃÖ¾ðÊó¤ò¥«¥á¥é¤ËÀßÄê cameraController.SetStageInfo(stageInfo.player, stageInfo.cameraOffsetObj);
¡¡Stage ¥¯¥é¥¹¤Î GetStageInfo() ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¡¢¤½¤ì¤¾¤ì°Û¤Ê¤ë·¿¤Î¾ðÊó¤ò£±¤Ä¤Ë¤Þ¤È¤á¤Æ¤¢¤ë¥¿¥×¥ë·¿¤ÎÌá¤ê¤ÎÃ椫¤é¼èÆÀ¤·¤Æ¤¤¤Þ¤¹¡£
º£²ó¤Ï Item1 ¤È Item2 ¤ÎξÊý¤Î·¿¤¬ GameObject ·¿¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤Ê¤ª¡¢¥¿¥×¥ë¤âÆþ¤ì»Ò¤òºî¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£Ä̾ï¤Ç¤¢¤ì¤Ð£²¤Ä¤Î·¿¤Ç¤¹¤¬¡¢¤³¤Îµ¡Ç½¤ò»È¤¨¤ÐÊ£¿ô¤Î¾ðÊó¤ò»ý¤¿¤»¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡ãÆþ¤ì»Ò¤Ë¤Ê¤Ã¤Æ¤¤¤ë¥¿¥×¥ë¡ä
(int x, (string a, int b) y) tuple = (0, ("String", 100));
»²¹Í¥µ¥¤¥È
MicroSoft C#¥ê¥Õ¥¡¥ì¥ó¥¹
¥¿¥×¥ë·¿
https://docs.microsoft.com/ja-jp/dotnet/csharp/lan...
̤³ÎǧÈô¹Ô C ÍÍ
¥¿¥×¥ë
https://ufcpp.net/study/csharp/datatype/tuples/
¡¡º£²ó¤Ï¥×¥ì¥Õ¥¡¥Ö¤Ë¤Ê¤Ã¤Æ¤¤¤ë Stage ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¤ß¡¢Stage ¥¹¥¯¥ê¥×¥È¤ÎÀßÄê¤ò¹Ô¤¤¤Þ¤¹¡£
¡¡CameraOffsetObj ÊÑ¿ô¤¬Äɲ䵤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢Stage ¥×¥ì¥Õ¥¡¥ÖÆâ¤Ë¤¢¤ëƱ̾¤Î¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ò¥É¥é¥Ã¥°¥¢¥ó¥É¥É¥í¥Ã¥×¤·¤Æ¥¢¥µ¥¤¥ó¤·¤Æ¤¯¤À¤µ¤¤¡£
¥×¥ì¥Õ¥¡¥Ö¤Ë¤Ê¤Ã¤Æ¤¤¤ë Stage ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü

¡¡°Ê¾å¤ÇÀßÄê¤Ï´°Î»¤Ç¤¹¡£
¡¡Update ¥á¥½¥Ã¥É¤Î½èÍý¤Î°ìÉô¤ò½¤Àµ¤·¡¢¥¹¥¯¥ê¥×¥È¤¬¥¢¥¿¥Ã¥Á¤·¤Æ¤¤¤ë¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¼«ÂΤòÀ©¸æ¤¹¤ë¤è¤¦¤ËÊѹ¹¤·¤Þ¤¹¡£
¤³¤Î½¤Àµ¤ò¹Ô¤Ã¤Æ¤â¡¢Ä̾ï¤Î¥²¡¼¥à¤Ë¤Ï±Æ¶Á¤Ï¤¢¤ê¤Þ¤»¤ó¡£
¡¡µÕ¤Ë¹Í¤¨¤ë¤È¡¢AR ³«È¯¤Î¾ì¹ç¤Ë¤Ï¡¢¾ï¤Ë¡¢AR ¤Çµ¯Æ°¤·¤¿¾ì¹ç¤È¡¢Unity ¥¨¥Ç¥£¥¿¡¼¤Çµ¯Æ°¤·¤¿¾ì¹ç¤Î¡¢
ÁÐÊý¤ÎµóÆ°¤ò°Õ¼±¤·¤Æ½èÍý¤òºîÀ®¤·¤¿¤ê½¤Àµ¤ò¹Ô¤Ã¤Æ¤¤¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
¤³¤ÎÉôʬ¤ò¤·¤Ã¤«¤ê¤ÈÂбþ¤Ç¤¤Æ¤¤¤Ê¤¤¤È¡¢¤É¤Á¤é¤«¤Ç¼Â¹Ô¤·¤¿ºÝ¤ËÉÔ¶ñ¹ç¤¬È¯À¸¤¹¤ë²ÄǽÀ¤¬½Ð¤Æ¤¯¤ë¤¿¤á¤Ç¤¹¡£
¡¡¿·¤·¤¤ SetStageInfo ¥á¥½¥Ã¥É¤òºîÀ®¤·¤Æ¡¢¥×¥ì¥¤¥ä¡¼¤È¥«¥á¥é¤Î°ÌÃÖ¾ðÊó¤Î¡¢Î¾Êý¤ò¾ðÊó¤ò³°Éô¤Î¥¯¥é¥¹¤«¤é¼õ¤±¼è¤ì¤ë¤è¤¦¤Ë¤·¤Æ¤ª¤¤Þ¤¹¡£
¤½¤·¤Æ cameraPos ÊÑ¿ô¤Ë¡¢³°Éô¤«¤éÄ󶡤ò¼õ¤±¤¿¥«¥á¥é¤Î°ÌÃÖ¾ðÊó¤òÀßÄꤹ¤ë¤³¤È¤Ç¡¢
AR ¥«¥á¥é¤Î°ÌÃÖ¤ò¡¢¥¹¥Æ¡¼¥¸Æâ¤Ë¿·¤·¤¯ÀßÄꤷ¤¿ CameraOffsetObj ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÎºÂɸ¤Ë¥»¥Ã¥È¤·¤Þ¤¹¡£
CameraController.cs
¡¡¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¤¿¤é¥»¡¼¥Ö¤·¤Þ¤¹¡£
¡¡ºÇ¸å¤Ë ARGameManager ¥¹¥¯¥ê¥×¥È¤ò½¤Àµ¤·¡¢¥¹¥Æ¡¼¥¸À¸À®¸å¤Î½èÍý¤òÊѹ¹¤·¤Þ¤¹¡£
¡¡¤¤¤Þ¤Þ¤Ç¤Ï CameraController ¥¹¥¯¥ê¥×¥È¤Î SetPlayer ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Æ¡¢¥«¥á¥é¤Ë¥×¥ì¥¤¥ä¡¼¤Î¾ðÊó¤Î¤ß¤òÄ󶡤·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢
º£²ó¤Ï¡¢Àè¤Û¤É¤Î CameraController ¥¹¥¯¥ê¥×¥È¤Î½¤Àµ¼ê½ç¤ÇºîÀ®¤·¤Æ¤ª¤¤¤¿ SetStageInfo ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤è¤¦¤ËÊѹ¹¤·¤Æ¡¢
¥×¥ì¥¤¥ä¡¼¤Î¾ðÊó¤È¹ç¤ï¤»¤Æ¡¢¥¹¥Æ¡¼¥¸Æâ¤Ë¤¢¤ë¥«¥á¥é¤ÎÀßÄê°ÌÃÖ¾ðÊó¤â°ú¿ô¤È¤·¤ÆÅϤ¹¤³¤È¤Ç¡¢
AR ¥«¥á¥é¤Î°ÌÃÖ¤ò¥¹¥Æ¡¼¥¸Æâ¤ËÀßÄꤷ¤Æ¤¢¤ë CameraOffsetPos ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ¤ËÀßÄꤷ¤Þ¤¹¡£
¡¡º£²ó¤Ï£²¤Ä¤Î¼ÂÁõÎã¤òÄ󼨤·¤Æ¤¢¤ê¤Þ¤¹¡£¤É¤Á¤é¤ÎÊýË¡¤Ç¼ÂÁõ¤·¤Æ¤âÌäÂꤢ¤ê¤Þ¤»¤ó¡£
¼ÂÁõ¤·¤Ê¤¤Êý¤ÎÆâÍƤˤĤ¤¤Æ¤Ï¡¢½èÍý¤Îή¤ì¤òÍý²ò¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£
¡¡
ARGameManager.cs
¡¡¥Ò¥¨¥é¥ë¥¡¼¤Ë¤¢¤ë AR Session Origin ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤« XR Origin ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òÁªÂò¤·¤Æ¡¢¥¤¥ó¥¹¥Ú¥¯¥¿¡¼¤è¤ê CameraController ¥¹¥¯¥ê¥×¥È¤ÎÀßÄê¤òÊѹ¹¤·¤Þ¤¹¡£
¡¡''CameraPos ÊÑ¿ô¤ò None ¤ËÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£
¤³¤Á¤é¤â Pengiun ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤ÈƱÍÍ¤Ë AR Æâ¤Ç¥¹¥Æ¡¼¥¸¤òÀ¸À®¸å¡¢¥¹¥Æ¡¼¥¸Æâ¤Ë¤¢¤ë¥«¥á¥é¤Î¥ª¥Õ¥»¥Ã¥È°ÌÃ֤Υ²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¾ðÊó¤ò
¥¹¥¯¥ê¥×¥È¤òÍøÍѤ·¤ÆưŪ¤Ë¼èÆÀ¤¹¤ë¤è¤¦¤ËÊѹ¹¤·¤¿¤¿¤á¤Ç¤¹¡£
¡¡¤½¤Î¤¿¤á¡¢¸½ºß CameraPos ÊÑ¿ô¤Ï None ¤Ç¤¹¤¬¡¢¥Ú¥ó¥®¥ó¤ÈƱ¤¸¤è¤¦¤Ë
¥¹¥Æ¡¼¥¸¤¬À¸À®¤µ¤ì¤¿¥¿¥¤¥ß¥ó¥°¤Ç CameraPos ÊÑ¿ô¤Ë¡¢Stage ¥×¥ì¥Õ¥¡¥ÖÆâ¤Î CameraOffsetObj ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î¾ðÊó¤¬ÂåÆþ¤µ¤ì¤Þ¤¹¡£
AR Session Origin ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¡¡¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü

XR Origin ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¡¡¥¤¥ó¥¹¥Ú¥¯¥¿¡¼²èÁü

¡¡°Ê¾å¤ÇÀßÄê¤Ï´°Î»¤Ç¤¹¡£
¡¡¤¹¤Ù¤Æ¤Î¼ê½ç¤¬´°À®¤·¤Þ¤·¤¿¡£Ê£¿ô¤Î¥¹¥¯¥ê¥×¥È¤ò·Ðͳ¤¹¤ë·Á¤Ç¤¢¤ë¤Î¤Ç¡¢½èÍý¤Îή¤ì¤ÎÇÄ°®¤¬Æñ¤·¤¤¤¿¤á¡¢¤·¤Ã¤«¤ê¤ÈÆɤ߲ò¤¤¤Æ¤¯¤À¤µ¤¤¡£
¥Î¡¼¥È¤Ê¤É¤Ë¥á¥½¥Ã¥É¤Î·Ò¤¬¤ê¤Ê¤É¤ò½ñ¤¤À¤·¤Æ²Ä»ë²½¤·¤Æ¤ß¤ë¤È¡¢¥¤¥á¡¼¥¸¤¬¤Ä¤«¤ß¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£
¡¡¼Âµ¡ÍѤ˥ӥë¥É¤ò¹Ô¤¤¡¢¥²¡¼¥à¤ò¼Â¹Ô¤·¤Æ¥¹¥Æ¡¼¥¸¤òÀ¸À®¤·¤Þ¤¹¡£º£¤Þ¤Ç¤È¥«¥á¥é¤Î°ÌÃÖ¤¬Êѹ¹¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£
°ÌÃÖ¤¬¤Þ¤À¾å¼ê¤¯¹ç¤ï¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢Stage ¥×¥ì¥Õ¥¡¥ÖÆâ¤Ë¤¢¤ë CameraOffsetPos ¥²¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Î°ÌÃÖ¤òÄ´À°¤·¡¢²¿²ó¤«¡¢¼Âµ¡¤Ë¤Æ³Îǧ¤ò¤·¤Ê¤¬¤éÄ´À°¤ò·«¤êÊÖ¤·¤Æ¤¯¤À¤µ¤¤¡£
¡¡°Ê¾å¤Ç¤³¤Î¼ê½ç¤Ï½ªÎ»¤Ç¤¹¡£
¡¡=>¡¡¼¡¤Ï¡¡³Ø½¬¤Î¿¶¤êÊ֤ꡡ¤Ç¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯